Propojení uživatelských účtů (JavaScript na straně klienta)

An example of the dialog asking the subscriber to link their subscription

Díky propojení předplatného je javascript na straně klienta jediným způsobem, jak vytvořit nové spojení mezi PPID a účtem Google čtenáře. Na nakonfigurované stránce se čtenáři zobrazí dialogové okno s výzvou k propojení svého předplatného. Poté, co čtenář klikne na tlačítko „Pokračovat s Google“, může si vybrat účet, se kterým se propojí, a po dokončení bude odeslán zpět na nakonfigurovanou stránku.

Propojení předplatného nevyžaduje použití souborů cookie třetích stran ani aktivní relaci Google pro čtenáře. To flexibilně umožňuje spuštění propojování kdykoli v prostředí čtenáře, nejen po nákupu. Pokud čtenář není přihlášen k účtu Google, má k tomu příležitost v rámci toku.

Příklady kódu

Tyto příklady kódu na straně klienta ilustrují, jak iniciovat propojení, jak vypadá platná odpověď a (volitelně) jak používat swg.js eventManager k naslouchání analytickým událostem a jejich odpovídajícímu směrování.

Přidružení PPID ke čtenářskému účtu pro jednu publikaci se provádí pomocí metody linkSubscription v swg.js . Použití je podobné předchozí funkci Propojení účtů ( příklad ), ale místo předání slibu metoda přijímá objekt obsahující PPID.

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

Ukázka odezvy ( rozhraní )

Platné odpovědi z úspěšně propojeného účtu obsahují jak PPID použitý v odkazu, tak booleovský stav success .

{
  publisherProvidedId: 6789,
  success: true
}

Seskupte více publikací

An example of the dialog asking the subscriber to link multiple their subscriptions with publications

Pro propojení předplatného můžete spojit více publikací najednou předáním objektu jako argumentu funkci linkSubscriptions . Vlastnost linkTo je pole objektů, kde každý objekt představuje specifické publicationId a jeho odpovídající publisherProvidedId (PPID), které mají být propojeny.

const result = await subscriptions.linkSubscriptions({linkTo: [
  { publicationId: 'pubId1', publisherProvidedId: 'ppid1' },
  { publicationId: 'pubId2', publisherProvidedId: 'ppid2' },
  
]});

Ukázkové odpovědi ( rozhraní )

Pole anyFailure (logická hodnota) a anySuccess (logická hodnota) označují, zda došlo k nějakému selhání nebo úspěchu při pokusu o propojení předplatného balíčku. Pole links obsahuje podrobnosti o výsledcích pro každou z publikací.

Úspěšné propojení se všemi publikacemi
{
  "anyFailure": false,
  "anySuccess": true,
  "links": [{
    "publicationId": "CAowqfCKCw",
    "publisherProvidedId": "370720",
    "success": true
  },
  {
    "publicationId": "CAow5rTUCw",
    "publisherProvidedId": "171385",
    "success": true
  }]
}
{
  "anyFailure": true,
  "anySuccess": true,
  "links": [{
    "publicationId": "CAowqfCKCw",
    "publisherProvidedId": "370720",
    "success": false
  },
  {
    "publicationId": "CAow5rTUCw",
    "publisherProvidedId": "171385",
    "success": true
  }]
}

Kompletní příklad na straně klienta pro 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>

Vytvořte ID klienta OAuth

Zatímco klient OAuth není vyžadován pro propojení předplatného, ​​klienta OAuth lze použít k vytvoření seznamu povolených domén autorizovaných pro váš projekt. Autorizované domény jsou seznam domén, ze kterých může váš JavaScript na straně klienta volat. Vaše publikace již pravděpodobně má v Centru pro vydavatele nakonfigurované ID klienta OAuth pro použití se swg.js .

Testování

Aby bylo možné otestovat implementaci Subscription Linking na straně klienta, musí být kód spuštěn ze serveru s autorizovaným původem javascriptu.

  1. Pro produkční použití mohou autorizované zdroje pocházet buď z nakonfigurovaného klienta OAuth, nebo ze seznamu ověřených domén v nastavení publikace v Centru pro vydavatele.
  2. Pro vývojové nebo přípravné použití s ​​neověřitelnou doménou (např. localhost nebo neveřejný server) musí být doména uvedena v nakonfigurovaném klientovi OAuth.

Odstraňte chyby

Nejčastějším problémem při testování javascriptu na straně klienta je obdržení chyby 403 - Not Authorized při pokusu o spuštění javascriptu. Chcete-li to vyřešit, ujistěte se, že spouštíte javascript z ověřené domény v Centru pro vydavatele nebo že kód spouštíte na hostiteli, který je v autorizovaném zdroji js propojeného klienta OAuth.

Další krok

Gratulujeme k dokončení integrace JavaScriptu na straně klienta. Nyní můžete přejít na integraci na straně serveru . Toto je povinný krok k synchronizaci oprávnění vašich čtenářů. Když implementujete a používáte požadovanou funkci UpdateReaderEntitlements na straně serveru, zajistíte, že budou zvýrazněny správné články pro správné odběratele.