پیوند دادن حساب های کاربری (جاوا اسکریپت سمت مشتری)

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

با پیوند اشتراک، جاوا اسکریپت سمت کلاینت تنها راه ایجاد ارتباط جدید بین PPID و حساب گوگل خواننده است. در یک صفحه پیکربندی شده، خواننده با یک کادر محاوره‌ای مواجه می‌شود که از او می‌خواهد اشتراک خود را پیوند دهد. پس از اینکه خواننده روی دکمه "ادامه با گوگل" کلیک کرد، می‌تواند یک حساب کاربری را برای پیوند انتخاب کند و پس از اتمام به صفحه پیکربندی شده بازگردانده شود.

لینک کردن اشتراک نیازی به استفاده از کوکی‌های شخص ثالث یا یک جلسه فعال گوگل برای خواننده ندارد. این امر به طور انعطاف‌پذیری امکان شروع تجربه لینک دادن را در هر زمانی از تجربه خواننده، و نه فقط پس از خرید، فراهم می‌کند. اگر خواننده‌ای به حساب گوگل خود وارد نشده باشد، به عنوان بخشی از جریان، این فرصت به او داده می‌شود.

مثال‌های کد

این نمونه‌های کد سمت کلاینت، نحوه‌ی آغاز یک لینک، ظاهر یک پاسخ معتبر و (اختیاری) نحوه‌ی استفاده از eventManager swg.js برای گوش دادن به رویدادهای تحلیلی و مسیریابی آنها بر اساس آن را نشان می‌دهند.

مرتبط کردن PPID با حساب خواننده برای یک انتشار واحد با استفاده از متد linkSubscription در swg.js انجام می‌شود. نحوه‌ی استفاده مشابه ویژگی قبلی Account Linking ( مثال ) است، اما به جای ارسال یک promise، این متد یک شیء حاوی 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 ، چندین نشریه را برای Subscription Linking به طور همزمان دسته‌بندی کنید. ویژگی 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 ایجاد کنید

اگرچه برای Subscription Linking نیازی به کلاینت OAuth نیست، اما می‌توان از یک کلاینت OAuth برای ایجاد فهرست دامنه‌های مجاز برای پروژه شما استفاده کرد. دامنه‌های مجاز، فهرستی از دامنه‌هایی هستند که جاوا اسکریپت سمت کلاینت شما مجاز به فراخوانی از آنها است. احتمالاً انتشار شما از قبل دارای یک شناسه کلاینت OAuth است که در مرکز ناشر، برای استفاده با swg.js پیکربندی شده است.

  • اگر فراخوانی‌های جاوا اسکریپت سمت کلاینتِ Subscription Linking شما از یک نام دامنه‌ی قبلاً تأیید شده سرچشمه می‌گیرند، نیازی به انجام هیچ کاری نیست.
  • اگر جاوا اسکریپت شما از یک نام دامنه جدید اجرا می‌شود، دستورالعمل‌های پیکربندی SwG OAuth Client ID را دنبال کنید.

آزمایش

برای آزمایش پیاده‌سازی سمت کلاینتِ Subscription Linking، کد باید از سروری با منشأ جاوا اسکریپت مجاز اجرا شود.

  1. برای استفاده در محیط عملیاتی، مبدأهای مجاز می‌توانند از OAuth Client پیکربندی‌شده یا از فهرست دامنه‌های تأییدشده در تنظیمات انتشار در مرکز ناشران (Publisher Center) باشند.
  2. برای استفاده در مرحله توسعه یا مرحله‌بندی، با یک دامنه غیرقابل تأیید (مثلاً localhost یا یک سرور غیرعمومی)، دامنه باید در OAuth Client پیکربندی‌شده فهرست شود.

عیب‌یابی خطاها

رایج‌ترین مشکل هنگام تست جاوا اسکریپت سمت کلاینت، دریافت خطای 403 - Not Authorized هنگام تلاش برای اجرای جاوا اسکریپت است. برای حل این مشکل، مطمئن شوید که جاوا اسکریپت را از یک دامنه معتبر در مرکز ناشر اجرا می‌کنید، یا اینکه کد را روی میزبانی اجرا می‌کنید که در ریشه‌های js مجاز کلاینت OAuth مرتبط قرار دارد.

مرحله بعدی

تبریک بابت تکمیل یکپارچه‌سازی جاوا اسکریپت سمت کلاینت. اکنون می‌توانید به سراغ یکپارچه‌سازی سمت سرور بروید. این یک گام ضروری برای همگام‌سازی مجوزهای خوانندگان شماست. وقتی تابع UpdateReaderEntitlements سمت سرور را پیاده‌سازی و استفاده می‌کنید، مطمئن می‌شوید که مقالات مناسب برای مشترکین مناسب برجسته می‌شوند.