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

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

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

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

أمثلة على الرموز

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

يتم ربط المعرّف المقدَّم من الناشر بحساب القارئ لجهة نشر واحدة باستخدام طريقة linkSubscription في swg.js. يشبه الاستخدام ميزة "ربط الحساب" السابقة (مثال)، ولكن بدلاً من تمرير عمليّة غير مكتملة، تقبل الطريقة عنصرًا يحتوي على المعرّف المقدَّم من الناشر (PPID).

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

نموذج الردّ (الواجهة)

تحتوي الردود الصالحة من حساب تم ربطه بنجاح على كل من PPID المستخدَم في الرابط وحالة success منطقية.

{
  publisherProvidedId: 6789,
  success: true
}

تجميع جهات نشر متعددة

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

يمكنك تجميع عدة منشورات لربط الاشتراكات في وقت واحد من خلال تمرير عنصر كمعلَمة إلى الدالة linkSubscriptions. السمة linkTo هي عبارة عن مصفوفة من العناصر، حيث يمثّل كل عنصر publicationId معيّنًا وpublisherProvidedId (المعرّف المقدَّم من الناشر) المقابل الذي سيتم ربطه.

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 معتمَدًا.

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

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

المشكلة الأكثر شيوعًا عند اختبار JavaScript من جهة العميل هي تلقّي الخطأ 403 - Not Authorized عند محاولة تشغيل JavaScript. لحلّ هذه المشكلة، تأكَّد من أنّك تشغّل JavaScript من نطاق تم التحقّق منه في &quot;مركز الناشرين&quot;، أو أنّك تشغّل الرمز على مضيف يقع ضمن مصادر js المسموح بها لعميل OAuth المرتبط.

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

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