Gebruikersaccounts koppelen (JavaScript aan de clientzijde)

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

Met Subscription Linking is client-side JavaScript de enige manier om een ​​nieuwe koppeling te maken tussen een PPID en het Google-account van een lezer. Op een geconfigureerde pagina krijgt de lezer een dialoogvenster te zien waarin hem wordt gevraagd zijn abonnement te koppelen. Nadat de lezer op de knop 'Doorgaan met Google' heeft geklikt, kan hij een account kiezen om mee te koppelen en na voltooiing teruggestuurd worden naar de geconfigureerde pagina.

Voor abonnementskoppelingen zijn geen cookies van derden of een actieve Google-sessie van de lezer vereist. Dit maakt het mogelijk om op elk gewenst moment in de gebruikerservaring te starten met de koppeling, en niet pas na een aankoop. Als een lezer niet is ingelogd op een Google-account, krijgt hij of zij de mogelijkheid om dit als onderdeel van de flow te doen.

Codevoorbeelden

Deze client-side codevoorbeelden illustreren hoe u een koppeling start, hoe een geldig antwoord eruitziet en (optioneel) hoe u de swg.js eventManager gebruikt om te luisteren naar analysegebeurtenissen en deze dienovereenkomstig te routeren.

Het koppelen van de PPID aan het account van de lezer voor een enkele publicatie gebeurt met behulp van de linkSubscription -methode in swg.js Het gebruik is vergelijkbaar met de vorige functie voor het koppelen van accounts ( voorbeeld ), maar in plaats van een belofte te geven, accepteert de methode een object met de PPID.

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

Voorbeeldrespons ( interface )

Geldige antwoorden van een succesvol gekoppeld account bevatten zowel de PPID die in de koppeling is gebruikt als een Booleaanse success .

{
  publisherProvidedId: 6789,
  success: true
}

Bundel meerdere publicaties

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

U kunt meerdere publicaties tegelijk bundelen voor abonnementskoppeling door een object als argument door te geven aan de functie linkSubscriptions . De eigenschap linkTo is een array van objecten, waarbij elk object een specifieke publicationId en de bijbehorende publisherProvidedId (PPID) vertegenwoordigt die gekoppeld moeten worden.

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

Voorbeeldantwoorden ( interface )

De velden anyFailure (Booleaans) en anySuccess (Booleaans) geven aan of de poging tot koppeling van de bundelabonnementen is mislukt of geslaagd. Het veld links bevat details over de resultaten van elk van de publicaties.

Succesvolle koppeling naar alle publicaties
{
  "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
  }]
}

Volledig client-side voorbeeld voor 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>

Een OAuth-client-ID maken

Hoewel een OAuth-client niet vereist is voor abonnementskoppeling, kan een OAuth-client wel worden gebruikt om de toegestane lijst met geautoriseerde domeinen voor uw project samen te stellen. Geautoriseerde domeinen zijn een lijst met domeinen van waaruit uw client-side JavaScript aanroepen mag uitvoeren. Uw publicatie heeft waarschijnlijk al een OAuth-client-ID geconfigureerd in Publisher Center voor gebruik met swg.js

  • Als uw Subscription Linking client-side javascript-aanroepen afkomstig zijn van een eerder gevalideerde domeinnaam, hoeft u geen actie te ondernemen.
  • Als uw javascript wordt uitgevoerd vanaf een nieuwe domeinnaam, volgt u de configuratie-instructies voor de SwG OAuth Client ID .

Testen

Om de client-side implementatie van Subscription Linking te testen, moet de code worden uitgevoerd vanaf een server met een geautoriseerde JavaScript-bron.

  1. Voor productiegebruik kunnen geautoriseerde bronnen afkomstig zijn van de geconfigureerde OAuth-client of van de lijst met geverifieerde domeinen in de publicatie-instellingen in Publisher Center.
  2. Voor ontwikkelings- of stagingdoeleinden met een niet-verifieerbaar domein (bijvoorbeeld localhost of een niet-openbare server) moet het domein worden vermeld in de geconfigureerde OAuth-client.

Fouten oplossen

Het meest voorkomende probleem bij het testen van client-side JavaScript is de foutmelding 403 - Not Authorized wanneer u probeert JavaScript uit te voeren. Om dit probleem op te lossen, moet u ervoor zorgen dat u JavaScript uitvoert vanaf een gevalideerd domein in Publisher Center, of dat u de code uitvoert op een host die zich in de geautoriseerde JavaScript-oorsprong van de gekoppelde OAuth-client bevindt.

Volgende stap

Gefeliciteerd met de voltooiing van de client-side JavaScript-integratie. U kunt nu verdergaan met de server-side integratie . Dit is een vereiste stap om de rechten van uw lezers te synchroniseren. Wanneer u de vereiste server-side UpdateReaderEntitlements functie implementeert en gebruikt, zorgt u ervoor dat de juiste artikelen voor de juiste abonnees worden gemarkeerd.