AMP

重要事項:這份文件不適用於您目前選取的格式 電子郵件

amp-subscriptions

說明

實作訂閱樣式的存取協定。

 

必要指令碼

<script async custom-element="amp-subscriptions" src="https://cdn.ampproject.org/v0/amp-subscriptions-0.1.js"></script>

用法

amp-subscriptions 元件實作訂閱樣式的存取/付費牆規則。

運作方式

  1. AMP 網頁會在 AMP 檢視器中載入,並使用 屬性 遮蔽部分區段。
  2. AMP 執行階段會呼叫所有已設定服務的 授權端點
    1. 如果所有服務皆未回應,則會使用 回溯授權
  3. AMP 執行階段會使用回應來隱藏或顯示 屬性 定義的不同區段。
  4. 在向讀者顯示文件後,AMP 執行階段會呼叫「回傳端點」,發布商可以使用該端點更新倒數計量器 (已使用的免費檢視次數)。
  5. 發布商可以在 AMP 文件中放置特定的 動作,以便
    1. 啟動自己的 登入頁面 以驗證讀者身分,並將讀者身分與系統中的 AMP 讀者 ID 建立關聯
    2. 啟動自己的 訂閱頁面,讓讀者購買新的訂閱
    3. 供應商服務 啟動登入或訂閱動作。

amp-access 的關係

amp-subscriptions 元件與 amp-access 類似,且許多功能都建立在 amp-access 之上。不過,這是更專業化的存取/付費牆協定版本。部分主要差異如下:

  1. amp-subscriptions 授權端點amp-access 授權端點 類似,但其回應已嚴格定義和標準化。
  2. 您需要使用下列項目,而非使用 amp-access 存取內容標記 中所述的 amp-access-hideamp-access 屬性:
  3. amp-subscriptions 元件允許多個 供應商服務 設定為網頁,以參與存取/付費牆決策。服務會同時執行,並根據哪個服務傳回肯定回應來決定優先順序。
  4. AMP 檢視器可根據與發布商之間的獨立協議,提供 amp-subscriptions 已簽署的授權回應,作為存取證明。

由於標記的標準化、對多個供應商的支援以及改善的檢視器支援,建議新的發布商和付費牆供應商實作使用 amp-subscriptions

AMP 讀者 ID

為了協助存取服務和使用案例,AMP Access 推出了讀者 ID 的概念。

讀者 ID 為發布商提供了一種在不洩露任何個人資訊的情況下識別讀者的解決方案。這可讓發布商追蹤文章檢視次數,並實作計量、付費牆和其他訂閱服務。

讀者 ID 是由 AMP 生態系統建立的匿名且唯一的 ID。它對於每個讀者/發布商配對都是唯一的 - 兩位不同的發布商對讀者的識別方式不同。這是一個不可逆轉的 ID。其目的是本質上是隨機的,並使用多種因素來實現這種不可預測性。讀者 ID 包含在所有 AMP/發布商通訊中,發布商可以使用它來識別讀者並將其對應到自己的身分系統。

讀者 ID 是在使用者裝置上建構的,旨在長期存在。但是,它遵循正常的瀏覽器儲存規則,包括無痕視窗的規則。讀者 ID 的預期生命週期為 1 年 (在每次使用之間),或直到使用者清除 Cookie 為止。讀者 ID 目前不會在裝置之間共用。

讀者 ID 的建構方式與 此處 描述的用於建構 ExternalCID 的機制類似。讀者 ID 範例為 amp-OFsqR4pPKynymPyMmplPNMvxSTsNQob3TnK-oE3nwVT0clORaZ1rkeEz8xej-vV6

我們強烈建議使用讀者 ID 而不是 Cookie 來識別讀者,因為當從 CDN 載入 AMP 時,發布商 Cookie 會被視為第三方 Cookie,並且可能會被瀏覽器封鎖。但是,如果您想在 Cookie 可用的情況下依賴 Cookie,請務必將 Cookie 正確標記為 跨來源 Cookie

設定

amp-subscriptions 元件必須使用 JSON 設定檔進行設定

屬性 說明
services (服務) <array> 的 <object> array 必須包含
score (評分) <object> 決定在未傳回有效授權的情況下,要選取哪個服務。
如需更多詳細資訊,請參閱 服務評分因素
fallbackEntitlement (回溯授權) <object> 決定如果所有服務皆未回應授權要求,讀者應擁有的存取層級。
如需更多詳細資訊,請參閱 回溯授權

以下是設定範例

<script type="application/json" id="amp-subscriptions">
  {
    "services": [
      {
        // Local service (required)
        "authorizationUrl": "https://pub.com/amp-authorisation?rid=READER_ID&url=SOURCE_URL",
        "pingbackUrl": "https://pub.com/amp-pingback?rid=READER_ID&url=SOURCE_URL",
        "actions": {
          "login": "https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL",
          "subscribe": "https://pub.com/amp-subscribe?rid=READER_ID&url=SOURCE_URL"
        }
      },
      {
        // Vendor services (optional)
        "serviceId": "service.vendor.com"
      }
    ],
    "score": {
      "supportsViewer": 10,
      "isReadyToPay": 9
    },
    "fallbackEntitlement": {
      "source": "fallback",
      "granted": true,
      "grantReason": "SUBSCRIBER",
      "data": {
        "isLoggedIn": false
      }
    }
  }
</script>

本機服務

本機服務由發布商提供,以控制和監控文件的存取權。

它是使用下列屬性設定的

屬性 說明
type (類型) 「remote」(遠端) 或「iframe」 預設值為「remote」(遠端)。「iframe」模式 允許將訊息傳達給發布商提供的 iframe,而不是透過 CORS 要求傳達給發布商提供的端點。
authorizationUrl (授權網址) <URL> 授權端點 的 HTTPS 網址。
pingbackUrl (回傳網址) <URL> (選用) 回傳端點 的 HTTPS 網址。
pingbackAllEntitlements (回傳所有授權) <boolean> (選用) 是否要將所有服務的授權傳送到 回傳端點
actions.login (動作.登入) <URL> 登入頁面 的 HTTPS 網址。
actions.subscribe (動作.訂閱) <URL> 訂閱頁面 的 HTTPS 網址。

<URL> 值指定具有替換變數的 HTTPS 網址。替換變數在下方的 網址變數 區段中詳細介紹。

以下是「本機」服務設定的範例

<script type="application/json" id="amp-subscriptions">
  {
    "services": [
      {
        "authorizationUrl": "https://pub.com/amp-authorisation?rid=READER_ID&url=SOURCE_URL",
        "pingbackUrl": "https://pub.com/amp-pingback?rid=READER_ID&url=SOURCE_URL",
        "pingbackAllEntitlements": true,
        "actions":{
          "login": "https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL",
          "subscribe": "https://pub.com/amp-subscribe?rid=READER_ID&url=SOURCE_URL"
        }
      },
      ...
    ]
  }
</script>

網址變數

在設定各種端點的網址時,發布商可以使用替換變數。這些變數的完整清單定義在 HTML 網址變數替換 中。

amp-access 新增了下列訂閱專用變數

變數 說明
READER_ID AMP 讀者 ID。
AUTHDATA(欄位) 適用於回傳和登入網址。它允許將授權回應中的任何欄位作為網址參數傳遞。例如,AUTHDATA(data.isLoggedIn)
RETURN_URL 由 AMP 執行階段指定的傳回網址的預留位置,供登入對話方塊傳回。

除了這些之外,下列標準網址替換在此元件的環境定義中也很有用

SOURCE_URL 此 AMP 文件的來源網址。如果文件是從 CDN 提供的,則 AMPDOC_URL 將是 CDN 網址,而 SOURCE_URL 將是原始來源網址。
AMPDOC_URL 此 AMP 文件的網址。
CANONICAL_URL 此 AMP 文件的標準網址。
DOCUMENT_REFERRER 參照網址。
VIEWER AMP 檢視器的網址。
RANDOM 隨機數字。有助於避免瀏覽器快取。

以下是使用讀者 ID、標準網址、參照資訊和隨機快取清除器擴充網址的範例

https://pub.com/amp-authorization?
   rid=READER_ID
  &url=CANONICAL_URL
  &ref=DOCUMENT_REFERRER
  &_=RANDOM

授權端點

授權是由發布商提供的端點,並由 AMP 執行階段呼叫。它是一個經過憑證的 CORS GET 端點。

授權端點必須實作 AMP 中的 CORS 安全性 中描述的安全性協定。

授權端點會傳回授權物件,屬性 可以使用該物件來隱藏或顯示文件的不同部分。授權端點是使用設定中的「authorizationUrl」屬性指定的。

授權端點傳回的授權回應必須符合預先定義的規格

屬性 說明
granted (已授權) <boolean> 說明讀者是否具有文件存取權。
grantReason (授權原因) <string> 授予文件存取權的原因,可辨識的原因如下
  • "SUBSCRIBER" 表示使用者已完全訂閱。
  • "METERING" 表示使用者正在計量中。
data (資料) <object> 可用於範本呈現的自由格式資料,例如與計量或文章計數相關的訊息。如需更多詳細資訊,請參閱 自訂內容

以下是訂閱者且已登入帳戶的讀者的回應範例

{
  "granted": true,
  "grantReason": "SUBSCRIBER",
  "data" : {
    "isLoggedIn": true
  }
}

以下是匿名讀者已閱讀 5 篇免費文章中的 4 篇的回應範例

{
  "granted": true,
  "grantReason": "METERING",
  "data" : {
    "isLoggedIn": false,
    "articlesRead": 4,
    "articlesLeft": 1,
    "articleLimit": 5
  }
}

以下是匿名讀者因已閱讀 5 篇免費文章中的 5 篇而沒有存取權的回應範例

{
  "granted": false,
  "data" : {
    "isLoggedIn": false,
    "articlesRead": 5,
    "articlesLeft": 0,
    "articleLimit": 5
  }
}

所有供應商服務都必須實作自己的授權端點,並符合 amp-subscriptions 回應格式

登入頁面

登入頁面允許發布商驗證讀者身分,並將其身分與 AMP 讀者 ID 建立關聯。登入頁面將在 動作 區段中所述的 "login" 動作後開啟。

以下是登入頁面網址的範例

{
  "actions": {
    "login": "https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL",
    ...
  }
}

網址可以採用 網址變數 區段中定義的任何參數。

訂閱頁面

訂閱頁面允許讀者向發布商購買訂閱。訂閱頁面將在 動作 區段中所述的 "subscribe" 動作後開啟。

訂閱頁面網址的範例

{
  "actions": {
    "subscribe": "https://pub.com/amp-subscribe?rid=READER_ID&url=SOURCE_URL",
    ...
  }
}

網址可以採用 網址變數 區段中定義的任何參數。

回傳端點

回傳是在「本機」服務設定中提供的端點,並由 AMP 執行階段呼叫。它是一個經過憑證的 CORS POST 端點。

注意: 回傳端點必須實作 AMP 中的 CORS 安全性 中描述的安全性協定。

當讀者開始檢視文件時,AMP 執行階段會自動呼叫此端點。回傳的主要目標之一是讓發布商更新計量資訊。

要求範例

{
  "service": "local",
  "granted": true,
  "grantReason": "METERING",
  "data": {
    "isLoggedIn": false,
    "articlesRead": 2,
    "articlesLeft": 3,
    "articleLimit": 5
  }
}

回傳是選用的。只有在指定「pingbackUrl」屬性時才會啟用。

預設情況下,作為主體,回傳 POST 要求會接收「獲勝」授權端點傳回的授權物件。但是,如果「本機」服務的設定包含 pingbackAllEntitlements: true,則主體將包含從所有服務接收到的所有授權陣列,包括未授予存取權的授權。

重要事項: 回傳 JSON 物件會以 Content-type: text/plain 傳送。這是故意的,因為它消除了 CORS 預檢檢查的需求。

將 AMP 讀者 ID 與發布商 Cookie 結合

為了準確識別讀者,發布商應將 AMP 讀者 ID 與任何與讀者相關的發布商 Cookie 建立關聯。


注意: 由於 AMP 讀者 ID 的建立方式,對於跨不同裝置和瀏覽器的同一使用者,可能有多個 AMP 讀者 ID,因此發布商必須注意適當處理。

「iframe」模式

在「iframe」模式中,授權和回傳是透過向發布商提供的 iframe 傳送訊息來提供的,而不是透過 CORS 要求傳送到指定的授權和回傳端點。

在 iframe 模式中,authorzationUrlpingbackUrl 會被刪除,並替換為

  • 「iframeSrc」- 發布商提供的 iframe
  • 「iframeVars - 要傳送到 iframe 的 AMP 變數
  • 「type」(類型) - 必須為「iframe」

「本機」服務在「iframe」模式中設定如下

<script type="application/json" id="amp-subscriptions">
  {
    "services": [
      {
        "type": "iframe",
        "iframeSrc": "https://...",
        "iframeVars": [
          "READER_ID",
          "CANONICAL_URL",
          "AMPDOC_URL",
          "SOURCE_URL",
          "DOCUMENT_REFERRER"
        ],
        "actions":{
          "login": "https://...",
          "subscribe": "https://..."
        }
      },
      ...
    ]
  }
</script>

「本機」服務中的屬性 (遠端模式)

  • 「type」(類型) - 選用類型,預設為「remote」(遠端)
  • 「authorizationUrl」(授權網址) - 授權端點網址。
  • 「pingbackUrl」(回傳網址) - 回傳端點網址。
  • 「actions」(動作) - 具名動作網址地圖。至少必須指定兩個動作:「login」(登入) 和「subscribe」(訂閱)。

在 iframe 模式中,authorizationUrlpingbackUrl 會被刪除,並替換為

  • 「iframeSrc」- 發布商提供的 iframe
  • 「iframeVars - 要傳送到 iframe 的 AMP 變數
  • 「type」(類型) - 必須為「iframe」

如需訊息協定的詳細資訊,請參閱 amp-access-iframe

供應商服務

供應商服務設定必須參照 serviceId,並且可以包含供應商服務允許的任何其他屬性。

<script type="application/json" id="amp-subscriptions">
  {
    "services": [
      {
        // Local service definition
      },
      {
        "serviceId": "service.vendor.com"
      }
    ]
  }
</script>

如需詳細資訊,請參閱供應商服務的文件。

可用的供應商服務

服務評分因素

如果沒有服務傳回授予存取權的授權,則會比較所有服務,方法是計算每個服務的分數,並選取得分最高的服務。每個服務都有一個 "baseScore" (預設值為 0)。任何服務設定中 baseScore 金鑰中的值 < 100 代表該服務的初始分數。如果未指定 baseScore,則預設為 0

分數的計算方式是取服務的 baseScore,並加上從 score[factorName] 設定中動態計算的權重,再乘以每個服務針對該 factorName 傳回的值。服務可以針對其支援的因素傳回 [-1..1] 之間的值。如果服務不知道某個因素或不支援該因素,則會傳回 0

如果發布商希望忽略評分因素,他們可以明確地將其值設定為 0,或從 score 地圖中省略它。

可用的評分因素

  1. supportsViewer 在服務可以與此網頁檢視的目前 AMP 檢視器環境合作時傳回 1
  2. isReadyToPay 在服務已知使用者且服務具有檔案中的付款方式,允許在不輸入付款詳細資料的情況下購買時傳回 1

所有評分因素的預設值均為 0。如果發生平局,則本機服務獲勝。

注意: 如果您想在特定檢視器的環境定義中測試文件的行為,您可以新增 #viewerUrl= 片段參數。例如,#viewerUrl=https://www.google.com 將模擬 Google 檢視器內文件的行為。

回溯授權

如果所有已設定的服務都無法取得授權,則在 fallbackEntitlement 區段下設定的授權將用作 local 服務的回溯授權。文件會根據此回溯授權解除封鎖。

回溯授權範例

{
  "fallbackEntitlement": {
    "source": "fallback",
    "granted": true,
    "grantReason": "SUBSCRIBER",
    "data": {
      "isLoggedIn": false
    }
  }
}

結構化資料標記

amp-subscriptions 依賴 Schema.org 頁面層級設定中的兩個主要屬性

  1. 必須授予使用者才能檢視內容的產品 ID:productID
  2. 此內容目前是否需要此產品:isAccessibleForFree

可用的設定將提供具有 isAccessibleForFree 屬性的 NewsArticle 類型項目,以及指定 productIDProduct 類型子項目。一旦找到 productIDisAccessibleForFree,就會解析設定。因此,建議將設定放置在 DOM 樹狀結構中盡可能高的位置。

支援 JSON-LD 和 Microdata 格式。

如需標記的更多詳細資訊,請參閱 此處

範例

在這些範例中

  1. 產品 ID 為「norcal_tribune.com:basic」("productID": "norcal_tribune.com:basic")。
  2. 此文件目前已鎖定 ("isAccessibleForFree": false)。

以下是使用 JSON-LD 的標記範例

<script type="application/ld+json">
  {
    "@context": "http://schema.org",
    "@type": "NewsArticle",
    "isAccessibleForFree": false,
    "publisher": {
      "@type": "Organization",
      "name": "The Norcal Tribune"
    },
    "hasPart": {...},
    "isPartOf": {
      "@type": ["CreativeWork", "Product"],
      "name" : "The Norcal Tribune",
      "productID": "norcal_tribune.com:basic"
    }
  }
</script>

以下是使用 Microdata 的標記範例

<div itemscope itemtype="http://schema.org/NewsArticle">
  <meta itemprop="isAccessibleForFree" content="false" />
  <div
    itemprop="isPartOf"
    itemscope
    itemtype="http://schema.org/CreativeWork http://schema.org/Product"
  >
    <meta itemprop="name" content="The Norcal Tribune" />
    <meta itemprop="productID" content="norcal_tribute.com:basic" />
  </div>
</div>

屬性

subscription-action

為了向讀者呈現特定的體驗,發布商提供了在「actions」(動作) 設定中宣告的特定動作,並且可以使用 subscriptions-action 屬性標記。

可用的值

例如,此按鈕將執行「subscribe」(訂閱) 動作

<button subscriptions-action="subscribe" subscriptions-display="EXPR">
  Subscribe now
</button>

依預設,動作是隱藏的,必須使用 subscriptions-display 運算式明確顯示。

subscription-service

在標記中,動作可以委派給其他服務,讓它們執行動作。這可以透過指定 subscriptions-service 屬性來實現。

可用的值

  • local:這將強制使用 local 服務來執行特定動作。
  • {serviceId} (例如 subscribe.google.com):這將強制使用 ID 為 serviceId 的服務來執行特定動作。

例如,此按鈕將顯示來自 subscribe.google.com 服務的訂閱頁面,而與 服務評分因素 無關

<button
  subscriptions-action="subscribe"
  subscriptions-service="subscribe.google.com"
>
  Subscribe
</button>

subscription-decorate

除了將動作委派給另一個服務之外,您還可以要求另一個服務裝飾元素。只需新增屬性 subsciptions-decorate 即可裝飾元素。

<button
  subscriptions-decorate
  subscriptions-action="subscribe"
  subscriptions-service="subscribe.google.com"
>
  Subscribe
</button>

subscriptions-section

進階區段會根據授權/授權回應自動顯示/隱藏。

可用的值

  • content:這用於封裝進階內容。
  • content-not-granted:這用於強制使用 local 服務來執行特定動作。

例如,您應將進階文章內容包含在 content 區段中,並將任何回溯內容包含在 content-not-granted 區段中

<!-- Include non-subscriber's content in here -->
<section subscriptions-section="content-not-granted">
  You are not allowed to currently view this content.
</section>

<!-- Include subscriber's content in here -->
<section subscriptions-section="content">
  This content will be hidden unless the reader is authorized.
</section>

重要事項: 請勿將 subscriptions-section="content" 套用到整個網頁。這樣做可能會在稍後顯示內容時導致可見的閃爍,並可能阻止搜尋引擎為您的網頁建立索引。我們建議允許在第一個可視區域中的內容呈現,而與訂閱狀態無關。

subscriptions-display

除了顯示/隱藏進階和回溯內容外,還有更多方法可以使用 subscriptions-display 屬性自訂文件,該屬性針對動作和對話方塊使用運算式。subscriptions-display 的值是以類似 SQL 的語言定義的布林運算式。語法定義在 amp-access 附錄 A 中。

授權回應的 data 物件中的值可用於建構運算式。在此範例中,isLoggedIn 的值位於 data 物件中,並用於有條件地顯示登入和升級帳戶的 UI

<section>
  <button
    subscriptions-action="login"
    subscriptions-display="NOT data.isLoggedIn"
  >
    Login
  </button>
  <div subscriptions-actions subscriptions-display="data.isLoggedIn">
    <div>My Account</div>
    <div>Sign out</div>
  </div>
  <div
    subscriptions-actions
    subscriptions-display="data.isLoggedIn AND NOT grantReason = 'SUBSCRIBER'"
  >
    <a href="...">Upgrade your account</a>
  </div>
</section>

重要事項: 請勿使用 data 來授予/拒絕內容的存取權、根據使用者存取權有條件地顯示內容,或顯示使用者或帳戶相關資訊。

使用評分自訂內容

每個已設定服務傳回的評分因素可用於控制對話方塊中內容的顯示。例如,factors['subscribe.google.com'].isReadyToPay 將是來自 subscribe.google.com 服務 (也稱為 amp-subscriptions-google) 的「準備好付款」評分因素。同樣地,factors['local'].isReadyToPay 將用於本機服務,而 scores['subscribe.google.com'].supportsViewer 將是 Google 服務支援目前檢視器的評分因素。

範例用法

<!-- Shows a Subscribe with Google button if the user is ready to pay -->
<button
  subscriptions-display="factors['subscribe.google.com'].isReadyToPay"
  subscriptions-action="subscribe"
  subscriptions-service="subscribe.google.com"
  subscriptions-decorate
>
  Subscribe with Google
</button>

subscriptions-dialog

付費牆對話方塊會根據授權/授權回應自動顯示。

對話方塊是使用 subscriptions-dialogsubscriptions-display 屬性標記的

<div subscriptions-dialog subscriptions-display="EXPR">
  This content will be shown as a dialog when "subscription-display" expression
  matches.
</div>

指定 subscriptions-dialog 對話方塊的元素也可以是 <template> 元素,在這種情況下,它將在最初呈現,然後再顯示為對話方塊。例如

<template type="amp-mustache" subscriptions-dialog subscriptions-display="NOT granted">
  <!-- Customise the experience for the user using the `data` object returned in the authorization response -->
  <!-- Do NOT use the `data` object to show or hide premium content as this is not always returned -->
{{^data.articlesRead}}  <p>
    You have read all of your free articles!
  </p>
{{/data.articlesRead}}{{#data.articlesRead}}  <p>
    You have read <b>{{data.articlesRead}}</b> articles.
  </p>
{{/data.articlesRead}}{{#data.articlesLeft}}  <p>
    You have <b>{{data.articlesLeft}}</b> free articles left!
  </p>
{{/data.articlesLeft}}  <button subscriptions-action="subscribe" subscriptions-service="local" subscriptions-display="true">
    Subscribe
  </button>
  <section subscriptions-display="NOT granted AND NOT data.isLoggedIn">
  <button
    subscriptions-action="login"
    subscriptions-service="local"
    subscriptions-display="NOT granted AND NOT data.isLoggedIn">
    Already subscribed?
  </button>

</template>

將顯示第一個具有相符 subscriptions-display 的對話方塊。

動作

動作是在 "local" 服務設定的 "actions" 屬性中提供的。它是一個具名動作集。可以透過這種方式設定任意數量的動作,但需要兩個動作:"login" (登入) 和 "subscribe" (訂閱)。

所有動作的運作方式都相同:彈出式視窗會針對指定的網址開啟。在彈出式視窗中開啟的網頁可以執行目標動作,例如登入/訂閱等,並且預期會透過重新導向到由 "return" 查詢參數指定的網址來傳回。

請注意,雖然不明顯可見,但任何供應商服務也可以實作自己的動作。或者,它可以委派給 "login" 服務來執行 "login" (登入) 或 "subscribe" (訂閱) 動作。

動作設定範例

"actions":{
  "login": "https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL",
  "subscribe": "https://pub.com/amp-subscribe?rid=READER_ID&url=SOURCE_URL"
}

login (登入)

login (登入) 動作流程如下

  1. 會向以下格式的指定網址發出要求
    https://pub.com/amp-login?
      rid=READER_ID
      &url=SOURCE_URL
      &return=RETURN_URL
    
**Note:** the "return" URL parameter is added by the AMP Runtime automatically if `RETURN_URL` substitution is not specified.
  1. 登入頁面將作為沒有特殊限制的普通網頁開啟,但它應該作為 瀏覽器對話方塊 運作良好。
  2. 一旦發布商驗證了讀者身分,發布商應將發布商 Cookie 與 AMP 讀者 ID 建立關聯,如 將 AMP 讀者 ID 與發布商 Cookie 結合 區段中所述。
  3. 一旦登入頁面完成其工作,它必須重新導向回指定的「傳回網址」,格式如下
    RETURN_URL#success=true|false

Notice the use of a URL hash parameter `success`. The value is either `true` or `false` depending on whether the login succeeds or is abandoned. Ideally the Login page, when possible, will send the signal in cases of both success or failure.
  1. 如果傳回 success=true 訊號,AMP 執行階段將重複呼叫授權和回傳端點,以更新文件的狀態並報告具有新存取設定檔的「檢視」。

當讀者按一下具有 subscriptions-action="login" 屬性的按鈕時,將觸發 login (登入) 動作。例如

<button subscriptions-action="login">
  Already subscribed? Login now
</button>

subscribe (訂閱)

subscribe (訂閱) 流程如下

  1. 會向以下格式的指定網址發出要求
    https://pub.com/amp-subscribe?
      rid=READER_ID
      &url=SOURCE_URL
      &return=RETURN_URL
    
**Note:** the "return" URL parameter is added by the AMP Runtime automatically if `RETURN_URL` substitution is not specified.
  1. 訂閱頁面將作為沒有特殊限制的普通網頁開啟,但它應該作為 瀏覽器對話方塊 運作良好。
  2. 一旦訂閱頁面完成其工作,它必須重新導向回指定的「傳回網址」,格式如下
    RETURN_URL#success=true|false

Notice the use of a URL hash parameter `success`. The value is either `true` or `false` depending on whether the login succeeds or is abandoned. Ideally the Subscribe page, when possible, will send the signal in cases of both success or failure.
  1. 如果傳回 success=true 訊號,AMP 執行階段將重複呼叫授權和回傳端點,以更新文件的狀態並報告具有新存取設定檔的「檢視」。

當讀者按一下具有 subscriptions-action="subscribe" 屬性的按鈕時,將觸發 subscribe (訂閱) 動作。例如

<button subscriptions-action="subscribe">
  Subscribe now
</button>

分析

amp-subscriptions 元件會觸發下列分析訊號

  1. subscriptions-started (訂閱已開始)
  • amp-subscriptions 初始化時觸發。
  • 資料:無。
  1. subscriptions-service-registered (訂閱服務已註冊)
  • amp-subscriptions 能夠解析服務的執行個體時觸發。服務可以隨時在網頁上初始化自身。
  • 資料:選取服務的 serviceId
  1. subscriptions-service-activated (訂閱服務已啟用)
  • 當選取並啟用已設定的服務以供使用時觸發。請參閱 服務評分因素
  • 資料:選取服務的 serviceId
  1. subscriptions-entitlement-resolved (訂閱授權已解析)
  • 當服務的授權擷取完成時觸發。
  • 資料:選取服務的 serviceIdaction
  1. subscriptions-access-granted (訂閱存取權已授予)
  • 當選取服務的授權授予文件存取權時觸發。
  • 資料:選取服務的 serviceId
  1. subscriptions-paywall-activated (訂閱付費牆已啟用)
  • 當選取服務的授權未授予文件存取權時觸發。
  • 資料:選取服務的 serviceId
  1. subscriptions-access-denied (訂閱存取權已拒絕)
  • 當選取服務的授權拒絕文件存取權時觸發。
  • 資料:選取服務的 serviceId
  1. subscriptions-service-re-authorized (訂閱服務已重新授權)
  • 當服務的重新授權完成時觸發。服務可以在執行任何動作後要求重新授權,例如 login (登入)。在重新授權完成後,會為服務擷取新的授權。
  • 資料:選取服務的 serviceId
  1. subscriptions-action-delegated (訂閱動作已委派)
  • 在委派的服務動作移交給其他服務之前觸發。請參閱 [subscription-service][15]
  • 資料:選取服務的 serviceId 和委派的 action
  1. subscriptions-action-ActionName-started (訂閱動作-動作名稱-已開始)
  • 當動作 ActionName 的執行開始時觸發。
  • 資料:無。
  1. subscriptions-action-ActionName-failed (訂閱動作-動作名稱-失敗)
  • 當動作 ActionName 的執行由於任何原因而失敗時觸發。
  • 資料:無。
  1. subscriptions-action-ActionName-success (訂閱動作-動作名稱-成功)
  • 當動作 ActionName 的執行結果報告為成功時觸發。
  • 資料:無。
  1. subscriptions-action-ActionName-rejected (訂閱動作-動作名稱-已拒絕)
  • 當動作 ActionName 的執行結果報告為失敗時觸發。
  • 資料:無。
  1. subscriptions-link-requested (訂閱連結已要求)
  • 當選取服務啟動訂閱帳戶連結要求時觸發。
  • 資料:選取服務的 serviceId
  1. subscriptions-link-complete (訂閱連結已完成)
  • 當選取服務已完成訂閱帳戶連結時觸發。
  • 資料:選取服務的 serviceId
  1. subscriptions-link-canceled (訂閱連結已取消)
  • 當選取服務啟動的訂閱帳戶連結要求已取消時觸發。
  • 資料:選取服務的 serviceId
需要更多協助嗎?

您已閱讀這份文件十幾次,但它並未真正涵蓋您的所有問題?也許其他人也有同樣的感覺:在 Stack Overflow 上與他們聯絡。

前往 Stack Overflow
發現錯誤或缺少功能?

AMP 專案非常鼓勵您的參與和貢獻!我們希望您能成為我們開源社群的長期參與者,但我們也歡迎您針對特別感興趣的議題做出一次性的貢獻。

前往 GitHub