קישור חשבונות משתמשים (JavaScript בצד הלקוח)

דוגמה לתיבת הדו-שיח שבה המנוי מתבקש לקשר את המינוי שלו

בקישור מינויים, הדרך היחידה ליצור שיוך חדש בין PPID לבין חשבון Google של קורא היא באמצעות JavaScript בצד הלקוח. בדף מוגדר, הקורא רואה תיבת דו-שיח שבה הוא מתבקש לקשר את המינוי שלו. אחרי שהקורא לוחץ על הלחצן 'המשך עם Google', הוא יכול לבחור חשבון לקשר אליו, ואחרי השלמת התהליך הוא יועבר בחזרה לדף שהוגדר.

התכונה 'קישור מינויים' לא מחייבת שימוש בקובצי Cookie של צד שלישי או בסשן פעיל ב-Google עבור הקורא. הגמישות הזו מאפשרת להפעיל את חוויית הקישור בכל שלב בחוויית הקריאה, ולא רק אחרי רכישה. אם הקורא לא מחובר לחשבון Google, הוא יוכל להתחבר לחשבון כחלק מהתהליך.

דוגמאות לקוד

בדוגמאות הקוד הבאות בצד הלקוח אפשר לראות איך יוזמים קישור, איך נראית תגובה תקינה ואיך משתמשים ב-swg.js eventManager כדי להאזין לאירועים של Analytics ולנתב אותם בהתאם (אופציונלי).

שיוך של מזהה PPID לחשבון של הקורא באתר חדשות יחיד מתבצע באמצעות השיטה linkSubscription ב-swg.js. השימוש דומה לתכונה הקודמת של קישור חשבונות (דוגמה), אבל במקום להעביר אובייקט promise, השיטה מקבלת אובייקט שמכיל את ה-PPID.

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

דוגמה לתשובה (ממשק)

תשובות תקינות מחשבון שקושר בהצלחה מכילות גם את PPID ששימש לקישור וגם סטטוס בוליאני success.

{
  publisherProvidedId: 6789,
  success: true
}

קיבוץ של כמה אתרי חדשות

דוגמה לתיבת הדו-שיח שבה המנוי מתבקש לקשר כמה מינויים לפרסומים

אפשר לקבץ כמה פרסומים לקישור מינויים בבת אחת על ידי העברת אובייקט כארגומנט לפונקציה linkSubscriptions. המאפיין linkTo הוא מערך של אובייקטים, שכל אחד מהם מייצג publicationId ספציפי ואת publisherProvidedId (מזהה PPID) התואם שלו שיש לקשר.

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

תשובות לדוגמה (ממשק)

השדות anyFailure (בוליאני) ו-anySuccess (בוליאני) מציינים אם הייתה הצלחה או כשל בניסיון לקשר את המינוי לחבילה. השדה 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 שמוגדר ב-Publisher Center, לשימוש עם swg.js.

  • אם קריאות ה-JavaScript בצד הלקוח של Subscription Linking מגיעות משם דומיין שאומת בעבר, לא נדרשת פעולה.
  • אם קוד ה-JavaScript שלכם מופעל משם דומיין חדש, צריך לפעול לפי ההוראות להגדרת מזהה לקוח OAuth של SwG.

בדיקה

כדי לבדוק את ההטמעה של קישור מינויים בצד הלקוח, צריך להריץ את הקוד משרת עם מקור JavaScript מורשה.

  1. לשימוש בסביבת ייצור, מקורות מורשים יכולים להגיע מלקוח OAuth שהוגדר או מרשימת הדומיינים המאומתים בהגדרות האתר ב-Publisher Center.
  2. לשימוש בפיתוח או בבדיקות, עם דומיין שלא ניתן לאימות (למשל localhost או שרת לא ציבורי), הדומיין צריך להופיע בלקוח OAuth שהוגדר.

פתרון בעיות במקרה של שגיאות

הבעיה הכי נפוצה כשבודקים JavaScript בצד הלקוח היא קבלת שגיאה 403 - Not Authorized כשמנסים להריץ את ה-JavaScript. כדי לפתור את הבעיה, צריך לוודא שמריצים את ה-JavaScript מדומיין מאומת ב-Publisher Center, או שמריצים את הקוד במארח שנמצא במקורות ה-JS המורשים של לקוח OAuth המקושר.

השלב הבא

סיימתם את השילוב של JavaScript בצד הלקוח. עכשיו אפשר לעבור אל השילוב בצד השרת. זהו שלב חובה כדי לסנכרן את זכויות הגישה של הקוראים. כשמטמיעים ומשתמשים בפונקציה הנדרשת UpdateReaderEntitlements בצד השרת, מוודאים שהמאמרים הנכונים מודגשים למנויים הנכונים.