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> of <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 (讀者 ID) AMP 讀者 ID。
AUTHDATA(field) (授權資料(欄位)) 適用於回傳和登入網址。它允許將授權回應中的任何欄位作為網址參數傳遞。例如,AUTHDATA(data.isLoggedIn)
RETURN_URL (返回網址) AMP 執行階段針對登入對話方塊指定的返回網址的預留位置。

除了這些之外,以下標準網址替換在此元件的上下文中也很有用

SOURCE_URL (來源網址) 此 AMP 文件的來源網址。如果文件是從 CDN 提供,AMPDOC_URL 將是 CDN 網址,而 SOURCE_URL 將是原始來源網址。
AMPDOC_URL (AMP 文件網址) 此 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 屬性和指定 productIDProduct 子項目的 NewsArticle 類型項目。一旦找到 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 屬性標記。

可用值

  • login (登入):這將觸發選定服務的 登入頁面
  • subscribe (訂閱):這將觸發選定服務的 訂閱頁面

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

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

預設情況下,動作是隱藏的,必須使用 subscriptions-display 表達式明確顯示。

subscription-service (訂閱服務)

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

可用值

  • local (本機):這將強制 local (本機) 服務用於特定動作。
  • {serviceId} (服務 ID) (例如 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 (服務 ID)。
  1. subscriptions-service-activated (訂閱服務已啟用)
  • 當選取並啟用已設定的服務以供使用時觸發。請參閱 服務評分因素
  • 資料:選定服務的 serviceId (服務 ID)。
  1. subscriptions-entitlement-resolved (訂閱授權已解析)
  • 當服務的授權擷取完成時觸發。
  • 資料:選定服務的 serviceId (服務 ID) 和 action (動作)。
  1. subscriptions-access-granted (訂閱存取已授予)
  • 當選定服務的授權授予文件存取權時觸發。
  • 資料:選定服務的 serviceId (服務 ID)。
  1. subscriptions-paywall-activated (訂閱付費牆已啟用)
  • 當選定服務的授權未授予文件存取權時觸發。
  • 資料:選定服務的 serviceId (服務 ID)。
  1. subscriptions-access-denied (訂閱存取已拒絕)
  • 當選定服務的授權拒絕文件存取權時觸發。
  • 資料:選定服務的 serviceId (服務 ID)。
  1. subscriptions-service-re-authorized (訂閱服務已重新授權)
  • 當服務的重新授權完成時觸發。服務可以在執行任何動作後請求重新授權,例如 login (登入)。在重新授權完成後,會擷取服務的新授權。
  • 資料:選定服務的 serviceId (服務 ID)。
  1. subscriptions-action-delegated (訂閱動作已委派)
  • 在委派的服務動作移交給其他服務之前觸發。請參閱 [subscription-service][15]
  • 資料:選定服務的 serviceId (服務 ID) 和委派的 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 (服務 ID)。
  1. subscriptions-link-complete (訂閱連結已完成)
  • 當選定服務已完成訂閱帳戶連結時觸發。
  • 資料:選定服務的 serviceId (服務 ID)。
  1. subscriptions-link-canceled (訂閱連結已取消)
  • 當選定服務啟動的訂閱帳戶連結請求已取消時觸發。
  • 資料:選定服務的 serviceId (服務 ID)。
需要更多協助嗎?

您已閱讀本文件十幾次,但它仍然沒有真正涵蓋您的所有問題?也許其他人也有相同的感受:請在 Stack Overflow 上與他們聯繫。

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

AMP 專案強烈鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的持續參與者,但我們也歡迎針對您特別熱衷的問題的一次性貢獻。

前往 GitHub