連結使用者帳戶 (用戶端 JavaScript)

要求訂閱者連結訂閱方案的對話方塊示例

使用訂閱連結功能時,用戶端 JavaScript 是唯一可在 PPID 和讀者的 Google 帳戶之間建立新關聯的方式。在已設定的頁面上,讀者會看到對話方塊,要求他們連結訂閱項目。讀者按一下「使用 Google 帳戶繼續」按鈕後,可以選擇要連結的帳戶,並在連結完成後返回設定的頁面。

訂閱連結功能不需要使用第三方 Cookie,也不需要讀者有有效的 Google 工作階段。這項功能可讓讀者在購買後隨時啟動連結體驗,提供更彈性的使用體驗。如果讀者未登入 Google 帳戶,系統會在流程中提供登入帳戶的選項。

程式碼範例

這些用戶端程式碼範例說明如何啟動連結、有效回應的樣貌,以及 (選用) 如何使用 swg.js eventManager 監聽及相應轉送數據分析事件。

如要將 PPID 與單一出版物的讀者帳戶建立關聯,請使用 swg.js 中的 linkSubscription 方法。使用方式與先前的帳戶連結功能 (示例) 類似,但方法會接受包含 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 用戶端 ID

雖然訂閱連結功能不需要 OAuth 用戶端,但您可以使用 OAuth 用戶端為專案建立授權網域的許可清單。授權網域是允許用戶端 JavaScript 發出呼叫的網域清單。您的出版品可能已在新聞發布者中心設定 OAuth 用戶端 ID,以便與 swg.js 搭配使用。

  • 如果訂閱連結用戶端 JavaScript 呼叫來自先前驗證過的網域名稱,則無須採取任何行動。
  • 如果 JavaScript 是從新網域名稱執行,請按照 SwG OAuth 用戶端 ID 設定操作說明操作。

測試

如要測試訂閱連結的用戶端實作項目,您必須透過具有授權 JavaScript 來源的伺服器執行程式碼。

  1. 如要用於正式版,授權的來源可以來自已設定的 OAuth 用戶端,或是來自 Publisher Center 內的已驗證網域清單中的網域。
  2. 如果是開發或測試環境,且使用無法驗證的網域 (例如 localhost 或非公開伺服器),則該網域必須列在已設定的 OAuth 用戶端中。

排解錯誤

測試用戶端 JavaScript 時最常見的問題,就是在嘗試執行 JavaScript 時收到 403 - Not Authorized 錯誤。如要解決這個問題,請確認您是在發布者中心中從已驗證的網域執行 JavaScript,或是在已連結 OAuth 用戶端的授權 js 來源中執行代碼。

下一步

恭喜您完成用戶端 JavaScript 整合作業。您現在可以進行伺服器端整合。這是同步讀者授權的必要步驟。實作並使用必要的伺服器端 UpdateReaderEntitlements 函式,即可確保系統會為適當的訂閱者醒目顯示適當的文章。