AMP

重要事項:本文件不適用於您目前選取的格式stories

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 執行階段會呼叫 Pingback 端點,發布商可使用該端點更新倒數計量器 (已使用的免費瀏覽次數)。
  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。其目的在於本質上是隨機的,並使用多種因素來實現這種不可預測性。讀者 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> 此陣列必須包含
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> (選用) Pingback 端點的 HTTPS 網址。
pingbackAllEntitlements <boolean> (選用) 是否要將所有服務的權限傳送至 Pingback 端點
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(field) 適用於 Pingback 和登入網址。它允許將授權回應中的任何欄位作為網址參數傳遞。例如,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",
    ...
  }
}

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

Pingback 端點

Pingback 是在 "本機" 服務設定中提供並由 AMP 執行階段呼叫的端點。它是具有憑證的 CORS POST 端點。

注意:Pingback 端點必須實作AMP 中 CORS 安全性中說明的安全協定。

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

要求範例

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

Pingback 是選用的。只有在指定 "pingbackUrl" 屬性時才會啟用。

依預設,作為主體,pingback POST 要求會接收由 "獲勝" 授權端點傳回的權限物件。不過,如果 "本機" 服務的設定包含 pingbackAllEntitlements: true,則主體將包含從所有服務接收的所有權限陣列,包括未授予存取權的權限。

重要事項:pingback JSON 物件是以 Content-type: text/plain 傳送的。這是故意的,因為這樣做可免除 CORS 預檢檢查的需要。

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

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


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

"iframe" 模式

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

在 iframe 模式中,authorzationUrl 和 pingbackUrl 會遭到刪除,並由下列項目取代

  • "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" - pingback 端點網址。
  • "actions" - 動作網址的具名地圖。至少必須指定兩個動作:"login" 和 "subscribe"。

在 iframe 模式中,authorizationUrl 和 pingbackUrl 會遭到刪除,並由下列項目取代

  • "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,或從分數地圖中省略它。

可用的評分因素

  1. 當服務可以針對此頁面瀏覽與目前的 AMP 檢視器環境合作時,supportsViewer 會傳回 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 類型項目,以及指定 productID 的 Product 類型子項目。一旦找到 productID 和 isAccessibleForFree,設定就會解析。因此,建議將設定放在 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} (例如 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:用於強制本機服務用於特定動作。

例如,您應該將進階文章內容包含在 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 的對話方塊。

動作

動作是在 "本機" 服務設定的 "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` 動作流程如下

  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",格式如下
    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 執行階段將重複呼叫授權和 Pingback 端點,以更新文件的狀態並使用新的存取權設定檔報告 "view"。

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

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

訂閱

`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",格式如下
    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 執行階段將重複呼叫授權和 Pingback 端點,以更新文件的狀態並使用新的存取權設定檔報告 "view"。

當讀者按一下具有 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。
  • 資料:所選服務的 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