JavaScript po stronie klienta

Przykład okna z prośbą o połączenie subskrypcji

Dzięki łączeniu subskrypcji JavaScript po stronie klienta to jedyny sposób na utworzenie nowego powiązania między PPID a kontem Google czytelnika. Na skonfigurowanej stronie czytelnik zobaczy okno z prośbą o połączenie subskrypcji. Gdy czytelnik kliknie przycisk „Kontynuuj z Google”, może wybrać konto, z którym ma utworzyć połączenie, a następnie wrócić na skonfigurowaną stronę.

Identyfikator PPID można powiązać z kontem czytelnika, korzystając z metody linkSubscription w swg.js. Można to zrobić podobnie jak w poprzedniej funkcji łączenia kont (przykład), ale zamiast przekazywać obietnicę, metoda akceptuje obiekt zawierający identyfikator PPID.

Przykłady kodu

Te przykłady kodu po stronie klienta pokazują, jak zainicjować połączenie, jak wygląda prawidłowa odpowiedź i (opcjonalnie) jak używać narzędzia eventManager swg.js do nasłuchiwania zdarzeń Analytics i odpowiedniego kierowania ich.

Rozpocznij okno łączenia subskrypcji

const result = await subscriptions.linkSubscription({publisherProvidedId:6789})

Przykładowa odpowiedź

Prawidłowe odpowiedzi z połączonego konta zawierają zarówno stan PPID użyty w połączeniu, jak i wartość logiczna success.

console.log(result) //{publisherProvidedId: 6789, success: true}

Łączenie subskrypcji nie wymaga użycia plików cookie innych firm ani aktywnej sesji Google w przypadku czytnika. Umożliwia to użytkownikowi przejście do linku w dowolnym momencie, a nie tuż po zakupie. Jeśli czytelnik nie jest zalogowany na koncie Google, może to zrobić w ramach procesu.

Pełny przykład po stronie klienta

<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

Chociaż do łączenia subskrypcji nie jest wymagany klient OAuth, można go użyć do utworzenia listy dozwolonych autoryzowanych domen w projekcie. Autoryzowane domeny to lista domen, z których kod JavaScript po stronie klienta może wykonywać wywołania. Twoja publikacja prawdopodobnie ma już skonfigurowany w Centrum wydawców identyfikator klienta OAuth do użycia z swg.js.

Testowanie

Aby przetestować implementację funkcji łączenia subskrypcji po stronie klienta, kod musi zostać uruchomiony z serwera z autoryzowanym źródłem JavaScriptu.

  1. W przypadku zastosowań produkcyjnych autoryzowane źródła mogą pochodzić ze skonfigurowanego klienta OAuth lub z listy zweryfikowanych domen w ustawieniach publikacji w Centrum wydawców.
  2. Na potrzeby programowania lub testowania z domeną, której nie można zweryfikować (np. hostem lokalnym lub serwerem innym niż publiczny), domena musi być wymieniona w skonfigurowanym kliencie OAuth.

Rozwiązywanie problemów z błędami

Najczęstszym problemem związanym z testowaniem kodu JavaScript po stronie klienta jest występowanie błędu 403 - Not Authorized podczas próby jego uruchomienia. Aby rozwiązać ten problem, upewnij się, że uruchamiasz kod JavaScript ze zweryfikowanej domeny w Centrum wydawców lub że kod działa na hoście, który znajduje się w autoryzowanych źródłach kodu js połączonego klienta OAuth.