ربط حسابات المستخدمين (JavaScript للعملاء)

مثال على مربّع الحوار الذي يطلب من المشترك ربط اشتراكه

من خلال ميزة "ربط الاشتراكات"، يكون JavaScript من جهة العميل هو الطريقة الوحيدة لإنشاء ربط جديد بين PPID وحساب Google الخاص بالقارئ. في صفحة تم ضبطها، يظهر للقارئ مربّع حوار يطلب منه ربط اشتراكه. بعد أن ينقر القارئ على الزر "متابعة باستخدام حساب Google"، يمكنه اختيار حساب لربطه، وسيتم إرساله مرة أخرى إلى الصفحة التي تم ضبطها عند اكتمال العملية.

لا يتطلّب ربط الاشتراك استخدام ملفّات تعريف ارتباط تابعة لجهات خارجية أو جلسة Google نشطة للقارئ. يتيح هذا الإجراء المرن بدء تجربة الربط في أي وقت أثناء استخدام القارئ للتطبيق، وليس فقط بعد إجراء عملية شراء. إذا لم يكن القارئ مسجِّلاً الدخول إلى حساب على Google، ستتوفّر له فرصة إجراء ذلك كجزء من العملية.

أمثلة على الرموز البرمجية

توضّح أمثلة الرموز البرمجية هذه من جهة العميل كيفية بدء رابط، وشكل الردّ الصالح، و (اختياريًا) كيفية استخدام swg.js eventManager للتنصّت على أحداث الإحصاءات وتوجيهها وفقًا لذلك.

يتم ربط معرّف PPID بحساب القارئ لنشر واحد باستخدام طريقة linkSubscription في swg.js. يشبه الاستخدام ميزة "ربط الحساب" السابقة (مثال)، ولكنه بدلاً من تمرير وعد، تقبل الطريقة عنصرًا يحتوي على ملف تعريف العميل المتعلّق بالإعلان (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 تم إعداده في "مركز الناشرين" لاستخدامه مع swg.js.

  • إذا كانت طلبات JavaScript من جهة العميل في ميزة "ربط الاشتراكات" تأتي من اسم نطاق تم التحقّق منه سابقًا، ليس عليك اتّخاذ أي إجراء.
  • إذا كان JavaScript يعمل من اسم نطاق جديد، اتّبِع تعليمات ضبط معرّف العميل في SwG OAuth.

الاختبار

لاختبار تنفيذ ميزة "ربط الاشتراكات" من جهة العميل، يجب تنفيذ الرمز البرمجي من خادم مصدره مرخّص لرمز JavaScript.

  1. لاستخدام الإصدار العلني، يمكن أن تأتي المصادر المعتمَدة من العميل المُعدّ ببروتوكول OAuth أو من قائمة النطاقات التي تم إثبات ملكيتها في إعدادات النشر ضمن Publisher Center.
  2. لاستخدام وضع التطوير أو مرحلة الاختبار، مع نطاق لا يمكن التحقّق منه (مثل localhost أو خادم غير متاح للجميع)، يجب إدراج النطاق في ملف OAuth Client الذي تم ضبطه.

تحديد الأخطاء وتصحيحها

إنّ المشكلة الأكثر شيوعًا عند اختبار JavaScript من جهة العميل هي ظهور خطأ 403 - Not Authorized عند محاولة تشغيل JavaScript. لحلّ هذه المشكلة، تأكَّد من تشغيل JavaScript من نطاق تم التحقّق منه في Publisher Center، أو من تشغيل الرمز على مضيف ضمن موارد JavaScript المعتمَدة لخادم OAuth المرتبط.

الخطوة التالية

تهانينا على إكمال عملية دمج JavaScript من جهة العميل. الآن، يمكنك الانتقال إلى الدمج من جهة الخادم. هذه خطوة مطلوبة لمزامنة أذونات القرّاء. عند تنفيذ واستخدام الدالة UpdateReaderEntitlements المطلوبة من جهة الخادم، تؤكّد من تمييز المقالات المناسبة للمشتركين المناسبين.