Łączenie z subskrypcjami to jedyny sposób na utworzenie nowego powiązania między usługą PPID a kontem Google czytelnika za pomocą JavaScriptu po stronie klienta. Na skonfigurowanej stronie czytelnikowi wyświetla się okno z prośbą o połączenie subskrypcji. Po kliknięciu przycisku „Kontynuuj z Google” czytelnik może wybrać konto do połączenia i po zakończeniu procesu wrócić na skonfigurowaną stronę.
Łączenie z subskrypcjami nie wymaga używania plików cookie innych firm ani aktywnej sesji Google po stronie czytelnika. Dzięki temu można w elastyczny sposób uruchamiać proces łączenia w dowolnym momencie, a nie tylko po zakupie. Jeśli czytelnik nie jest zalogowany na konto Google, może to zrobić w ramach procesu.
Przykłady kodu
Te przykłady kodu po stronie klienta pokazują, jak zainicjować link, jak wygląda prawidłowa odpowiedź i (opcjonalnie) jak używać swg.js eventManager do nasłuchiwania zdarzeń analitycznych i odpowiedniego ich kierowania.
Łączenie pojedynczej publikacji
Powiązanie identyfikatora PPID z kontem czytelnika w przypadku pojedynczej publikacji odbywa się za pomocą metody linkSubscription w swg.js.
Sposób użycia jest podobny do poprzedniej funkcji łączenia kont (przykład), ale zamiast przekazywać obietnicę, metoda akceptuje obiekt zawierający identyfikator PPID.
const result = await subscriptions.linkSubscription({publisherProvidedId:6789})
Przykładowa odpowiedź (interfejs)
Prawidłowe odpowiedzi z pomyślnie połączonego konta zawierają zarówno PPID użyte w linku, jak i stan logiczny success.
{
publisherProvidedId: 6789,
success: true
}
Łączenie wielu publikacji w pakiet
Możesz połączyć ze sobą wiele publikacji jednocześnie, przekazując obiekt jako argument do funkcji linkSubscriptions. Właściwość linkTo to tablica obiektów, z których każdy reprezentuje konkretny publicationId i odpowiadający mu publisherProvidedId (PPID), które mają zostać połączone.
const result = await subscriptions.linkSubscriptions({linkTo: [
{ publicationId: 'pubId1', publisherProvidedId: 'ppid1' },
{ publicationId: 'pubId2', publisherProvidedId: 'ppid2' },
…
]});
Przykładowe odpowiedzi (interfejs)
Pola anyFailure (wartość logiczna) i anySuccess (wartość logiczna) wskazują, czy próba połączenia subskrypcji z pakietem zakończyła się niepowodzeniem czy sukcesem. Pole
links zawiera szczegółowe informacje o wynikach każdej publikacji.
Połączenie ze wszystkimi publikacjami
{
"anyFailure": false,
"anySuccess": true,
"links": [{
"publicationId": "CAowqfCKCw",
"publisherProvidedId": "370720",
"success": true
},
{
"publicationId": "CAow5rTUCw",
"publisherProvidedId": "171385",
"success": true
}]
}
Nie udało się połączyć żadnej publikacji
{
"anyFailure": true,
"anySuccess": true,
"links": [{
"publicationId": "CAowqfCKCw",
"publisherProvidedId": "370720",
"success": false
},
{
"publicationId": "CAow5rTUCw",
"publisherProvidedId": "171385",
"success": true
}]
}
Pełny przykład po stronie klienta dla linkSubscription
<script
async
type="application/javascript"
subscriptions-control="manual"
src="https://news.google.com/swg/js/v1/swg.js">
</script>
<script>
function linkSubscription(ppid) {
self.SWG.push(async (subscriptions) => {
try {
const result = await subscriptions.linkSubscription({
publisherProvidedId: ppid,
})
console.log(result)
} catch(e) {
console.log(e)
}
})
}
document.addEventListener('DOMContentLoaded', function () {
(self.SWG = self.SWG || []).push(subscriptions => {
subscriptions.init("PUBLICATION_ID");
//Configure the event manager for analytics integration
subscriptions.getEventManager().then(manager => {
manager.registerEventListener((event) => {
// Add code here to send the event to your analytics
// sendToAnalytics(event);
console.log(event);
});
});
});
document
.querySelector("SELECTOR")
.addEventListener('click', function(){
linkSubscription(PPID)
})
});
</script>
Tworzenie identyfikatora klienta OAuth
Klient OAuth nie jest wymagany w przypadku łączenia subskrypcji, ale można go użyć do utworzenia listy dozwolonych autoryzowanych domen w projekcie.
Autoryzowane domeny to lista domen, z których skrypt JavaScript po stronie klienta może wykonywać wywołania. W Centrum wydawców prawdopodobnie masz już skonfigurowany identyfikator klienta OAuth do używania z swg.js.
- Jeśli wywołania JavaScript po stronie klienta w przypadku łączenia subskrypcji pochodzą z wcześniej zweryfikowanej nazwy domeny, nie musisz nic robić.
- Jeśli Twój kod JavaScript działa w nowej nazwie domeny, postępuj zgodnie z instrukcjami konfiguracji identyfikatora klienta OAuth SwG.
Testowanie
Aby przetestować implementację po stronie klienta w przypadku łączenia subskrypcji, kod musi być uruchamiany z serwera z autoryzowanym źródłem JavaScriptu.
- W przypadku użycia produkcyjnego autoryzowane źródła mogą pochodzić ze skonfigurowanego klienta OAuth lub z listy zweryfikowanych domen w ustawieniach publikacji w Publisher Center.
- W przypadku środowisk deweloperskich lub testowych z domeną, której nie można zweryfikować (np. localhost lub serwer niepubliczny), domena musi być wymieniona w skonfigurowanym kliencie OAuth.
Rozwiązywanie problemów
Najczęstszym problemem podczas testowania kodu JavaScript po stronie klienta jest otrzymywanie błędu 403 - Not Authorized podczas próby uruchomienia kodu JavaScript. Aby rozwiązać ten problem, upewnij się, że uruchamiasz kod JavaScript z zweryfikowanej domeny w Publisher Center lub że uruchamiasz kod na hoście, który znajduje się w autoryzowanych źródłach JavaScriptu połączonego klienta OAuth.
Następny krok
Gratulujemy ukończenia integracji JavaScriptu po stronie klienta. Teraz możesz przejść do integracji po stronie serwera.
Jest to wymagany krok do synchronizacji uprawnień czytelników. Gdy wdrożysz i będziesz używać wymaganej funkcji UpdateReaderEntitlements po stronie serwera, będziesz mieć pewność, że odpowiednie artykuły są wyróżniane dla odpowiednich subskrybentów.