Σύνδεση Λογαριασμών Χρηστών (JavaScript από την πλευρά του πελάτη)

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

Με τη Σύνδεση Συνδρομών, η javascript από την πλευρά του πελάτη είναι ο μόνος τρόπος για να δημιουργήσετε μια νέα συσχέτιση μεταξύ ενός PPID και του Λογαριασμού Google ενός αναγνώστη. Σε μια διαμορφωμένη σελίδα, στον αναγνώστη παρουσιάζεται ένα παράθυρο διαλόγου που του ζητά να συνδέσει τη συνδρομή του. Αφού ο αναγνώστης κάνει κλικ στο κουμπί "Συνέχεια με την Google", μπορεί να επιλέξει έναν λογαριασμό για σύνδεση και να επιστρέψει στη διαμορφωμένη σελίδα μετά την ολοκλήρωση.

Η σύνδεση συνδρομής δεν απαιτεί τη χρήση cookies τρίτων ή ενεργή περίοδο σύνδεσης Google για τον αναγνώστη. Αυτό επιτρέπει με ευελιξία την είσοδο στην εμπειρία σύνδεσης ανά πάσα στιγμή στην εμπειρία ενός αναγνώστη και όχι μόνο μετά από μια αγορά. Εάν ένας αναγνώστης δεν είναι συνδεδεμένος σε Λογαριασμό Google, του δίνεται η ευκαιρία να το κάνει ως μέρος της ροής.

Παραδείγματα κώδικα

Αυτά τα παραδείγματα κώδικα από την πλευρά του πελάτη δείχνουν πώς να ξεκινήσετε έναν σύνδεσμο, πώς μοιάζει μια έγκυρη απόκριση και (προαιρετικά) πώς να χρησιμοποιήσετε το eventManager swg.js για να ακούσετε συμβάντα ανάλυσης και να τα δρομολογήσετε ανάλογα.

Η συσχέτιση του PPID με τον λογαριασμό του αναγνώστη για μια μεμονωμένη δημοσίευση γίνεται χρησιμοποιώντας τη μέθοδο linkSubscription στο swg.js Η χρήση είναι παρόμοια με την προηγούμενη λειτουργία σύνδεσης λογαριασμού ( παράδειγμα ), αλλά αντί να περάσει μια υπόσχεση, η μέθοδος δέχεται ένα αντικείμενο που περιέχει το PPID.

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

Δείγμα απόκρισης ( διεπαφή )

Οι έγκυρες απαντήσεις από έναν επιτυχώς συνδεδεμένο λογαριασμό περιέχουν τόσο το PPID που χρησιμοποιείται στον σύνδεσμο όσο και μια κατάσταση success με βάση τη λογική τιμή.

{
  publisherProvidedId: 6789,
  success: true
}

Ομαδοποίηση πολλαπλών δημοσιεύσεων

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

Μπορείτε να ομαδοποιήσετε πολλές δημοσιεύσεις για σύνδεση συνδρομών ταυτόχρονα, περνώντας ένα αντικείμενο ως όρισμα στη συνάρτηση linkSubscriptions . Η ιδιότητα linkTo είναι ένας πίνακας αντικειμένων, όπου κάθε αντικείμενο αντιπροσωπεύει ένα συγκεκριμένο publicationId και το αντίστοιχο publisherProvidedId (PPID) που θα συνδεθεί.

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

Δείγματα απαντήσεων ( διεπαφή )

Τα πεδία anyFailure (boolean) και anySuccess (boolean) υποδεικνύουν εάν υπήρξε κάποια αποτυχία ή επιτυχία στην προσπάθεια σύνδεσης συνδρομής πακέτου. Το πεδίο links περιέχει λεπτομέρειες για τα αποτελέσματα για κάθε μία από τις δημοσιεύσεις.

Επιτυχής σύνδεση με όλες τις δημοσιεύσεις
{
  "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
  }]
}

Πλήρες παράδειγμα από την πλευρά του πελάτη για 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>

Δημιουργήστε ένα αναγνωριστικό πελάτη OAuth

Ενώ δεν απαιτείται πρόγραμμα-πελάτης OAuth για τη σύνδεση συνδρομής, μπορεί να χρησιμοποιηθεί ένα πρόγραμμα-πελάτης OAuth για τη σύνταξη της λίστας επιτρεπόμενων εξουσιοδοτημένων τομέων για το έργο σας. Οι εξουσιοδοτημένοι τομείς είναι μια λίστα τομέων από τους οποίους επιτρέπεται η javascript της πλευράς του προγράμματος-πελάτη σας να πραγματοποιεί κλήσεις. Η έκδοσή σας πιθανότατα έχει ήδη ένα αναγνωριστικό πελάτη OAuth που έχει ρυθμιστεί στο Κέντρο εκδοτών, για χρήση με swg.js

  • Εάν οι κλήσεις javascript από την πλευρά του πελάτη για τη σύνδεση συνδρομής προέρχονται από ένα προηγουμένως επικυρωμένο όνομα τομέα, δεν απαιτείται καμία ενέργεια.
  • Εάν το javascript σας εκτελείται από ένα νέο όνομα τομέα, ακολουθήστε τις οδηγίες διαμόρφωσης του SwG OAuth Client ID .

Δοκιμές

Για να δοκιμαστεί η υλοποίηση του Subscription Linking από την πλευρά του πελάτη, ο κώδικας πρέπει να εκτελεστεί από έναν διακομιστή με εξουσιοδοτημένη προέλευση javascript.

  1. Για χρήση παραγωγής, οι εξουσιοδοτημένες προελεύσεις μπορούν να προέρχονται είτε από το διαμορφωμένο πρόγραμμα-πελάτη OAuth είτε από τη λίστα επαληθευμένων τομέων στις ρυθμίσεις δημοσίευσης στο Κέντρο εκδοτών.
  2. Για χρήση ανάπτυξης ή σταδιακής εφαρμογής, με μη επαληθεύσιμο τομέα (π.χ. localhost ή μη δημόσιο διακομιστή), ο τομέας πρέπει να αναφέρεται στο διαμορφωμένο πρόγραμμα-πελάτη OAuth.

Αντιμετώπιση σφαλμάτων

Το πιο συνηθισμένο πρόβλημα κατά τη δοκιμή javascript από την πλευρά του πελάτη είναι η εμφάνιση σφάλματος 403 - Not Authorized κατά την προσπάθεια εκτέλεσης του javascript. Για να επιλύσετε αυτό το πρόβλημα, βεβαιωθείτε ότι εκτελείτε το javascript από έναν επικυρωμένο τομέα στο Κέντρο Εκδοτών ή ότι εκτελείτε τον κώδικα σε έναν κεντρικό υπολογιστή που βρίσκεται στις εξουσιοδοτημένες προελεύσεις js του συνδεδεμένου προγράμματος-πελάτη OAuth.

Επόμενο βήμα

Συγχαρητήρια για την ολοκλήρωση της ενσωμάτωσης JavaScript από την πλευρά του πελάτη. Τώρα μπορείτε να προχωρήσετε στην ενσωμάτωση από την πλευρά του διακομιστή . Αυτό είναι ένα απαιτούμενο βήμα για τον συγχρονισμό των δικαιωμάτων των αναγνωστών σας. Όταν υλοποιείτε και χρησιμοποιείτε την απαιτούμενη συνάρτηση UpdateReaderEntitlements από την πλευρά του διακομιστή, διασφαλίζετε ότι τα σωστά άρθρα επισημαίνονται για τους σωστούς συνδρομητές.