amp-subscriptions
說明
實作訂閱樣式的存取協定。
必要指令碼
<script async custom-element="amp-subscriptions" src="https://cdn.ampproject.org/v0/amp-subscriptions-0.1.js"></script>
用法
amp-subscriptions
元件實作訂閱樣式的存取/付費牆規則。
運作方式
- AMP 網頁在 AMP 檢視器中載入,部分區段使用 屬性 遮蔽。
- AMP Runtime 呼叫所有已設定服務的 授權端點。
- 如果所有服務都無法回應,將會使用 回退授權。
- AMP Runtime 使用回應來隱藏或顯示不同區段,如 屬性 所定義。
- 在文件向讀者顯示後,AMP Runtime 會呼叫回呼端點,發布商可以使用該端點來更新倒數計量器 (已使用的免費檢視次數)。
- 發布商可以在 AMP 文件中放置特定的 動作,以便
- 啟動他們自己的 登入頁面 以驗證讀者身分,並將讀者在其系統中的身分與 AMP Reader ID 建立關聯
- 啟動他們自己的 訂閱頁面,讓讀者購買新的訂閱
- 從 供應商服務 啟動登入或訂閱動作。
與 amp-access
的關係
amp-subscriptions
元件與 amp-access
類似,並且在許多功能上都建立在 amp-access
的基礎之上。然而,它是更專業化的存取/付費牆協定版本。一些主要差異包括
amp-subscriptions
授權端點 與amp-access
授權端點 類似,但其回應已嚴格定義且標準化。- 您需要使用以下項目,而不是使用
amp-access
存取內容標記 中所述的amp-access-hide
和amp-access
屬性subscription-section
定義訂閱者和非訂閱者的內容區段。subscription-display
根據與使用者擁有的訂閱無關的因素顯示元素。
amp-subscriptions
元件允許多個 供應商服務 設定為頁面參與存取/付費牆決策。服務會同時執行,並根據哪個服務傳回正面回應來確定優先順序。- AMP 檢視器允許根據與發布商的獨立協議,為
amp-subscriptions
提供簽署的授權回應,作為存取證明。
由於標記的標準化、對多個供應商的支援以及改進的檢視器支援,建議新的發布商和付費牆供應商實作使用 amp-subscriptions
。
AMP Reader ID
為了協助存取服務和使用案例,AMP Access 引入了Reader ID 的概念。
Reader ID 為發布商提供了一種在不洩露任何個人資訊的情況下識別讀者的解決方案。這讓發布商可以追蹤文章檢視次數,並實作計量、付費牆和其他訂閱服務。
Reader ID 是由 AMP 生態系統建立的匿名且唯一的 ID。對於每個讀者/發布商配對來說,它是唯一的 - 讀者對兩個不同的發布商的識別方式不同。它是一個不可逆的 ID。它旨在本質上是隨機的,並使用多種因素來實現這種不可預測性。Reader ID 包含在所有 AMP/發布商通訊中,發布商可以使用它來識別讀者並將其對應到他們自己的身分系統。
Reader ID 是在使用者裝置上建構的,旨在長期存在。但是,它遵循正常的瀏覽器儲存規則,包括針對無痕視窗的規則。Reader ID 的預期生命週期為使用間隔 1 年或直到使用者清除其 Cookie 為止。Reader ID 目前不會在裝置之間共用。
Reader ID 的建構方式與 此處 描述的用於建置 ExternalCID 的機制類似。Reader ID 範例為 amp-OFsqR4pPKynymPyMmplPNMvxSTsNQob3TnK-oE3nwVT0clORaZ1rkeEz8xej-vV6
。
我們強烈建議使用 Reader ID 而不是 Cookie 來識別讀者,因為當從 CDN 載入 AMP 時,發布商 Cookie 會被視為第三方 Cookie,並且可能會被瀏覽器封鎖。但是,如果您想在 Cookie 可用的情況下依賴 Cookie,請確保將 Cookie 正確標記為 跨來源 Cookie。
設定
amp-subscriptions
元件必須使用 JSON 設定進行設定
屬性 | 值 | 說明 |
---|---|---|
services (服務) | <array> of <object> (物件的 <array>) | 此 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 網址。替換變數在下面的 網址變數 區段中有更詳細的說明。
以下是 "local" 服務設定的範例
<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 Reader ID。 |
AUTHDATA(field) | 適用於回呼和登入網址。它允許將授權回應中的任何欄位作為網址參數傳遞。例如,AUTHDATA(data.isLoggedIn) |
RETURN_URL | AMP Runtime 為登入對話方塊指定的傳回網址的預留位置。 |
除了這些之外,以下標準網址替換在此元件的上下文中也很有用
SOURCE_URL | 此 AMP 文件的來源網址。如果文件是從 CDN 提供,則 AMPDOC_URL 將是 CDN 網址,而 SOURCE_URL 將是原始來源網址。 |
AMPDOC_URL | 此 AMP 文件的網址。 |
CANONICAL_URL | 此 AMP 文件的標準網址。 |
DOCUMENT_REFERRER | 參照網址。 |
VIEWER | AMP 檢視器的網址。 |
RANDOM | 隨機數字。有助於避免瀏覽器快取。 |
以下是使用 Reader ID、標準網址、參照資訊和隨機快取清除器擴充的網址範例
https://pub.com/amp-authorization? rid=READER_ID &url=CANONICAL_URL &ref=DOCUMENT_REFERRER &_=RANDOM
授權端點
授權是由發布商提供的端點,並由 AMP Runtime 呼叫。它是一個經過憑證的 CORS GET 端點。
授權端點必須實作 AMP 中的 CORS 安全性 中描述的安全性協定。
授權端點傳回授權物件,屬性 可以使用該物件來隱藏或顯示文件的不同部分。授權端點是使用設定中的 "authorizationUrl" 屬性指定的。
授權端點傳回的授權回應必須符合預先定義的規格
屬性 | 值 | 說明 |
---|---|---|
granted (已授權) | <boolean> (<布林值>) | 說明讀者是否可以存取文件。 |
grantReason (授權原因) | <string> (<字串>) | 授予文件存取權的原因,可辨識的原因為
|
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 Reader 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", ... } }
網址可以採用 網址變數 區段中定義的任何參數。
回呼端點
回呼是在 "local" 服務設定中提供的端點,並由 AMP Runtime 呼叫。它是一個經過憑證的 CORS POST 端點。
注意: 回呼端點必須實作 AMP 中的 CORS 安全性 中描述的安全性協定。
當讀者開始檢視文件時,AMP Runtime 會自動呼叫此端點。回呼的主要目標之一是讓發布商更新計量資訊。
請求範例
{ "service": "local", "granted": true, "grantReason": "METERING", "data": { "isLoggedIn": false, "articlesRead": 2, "articlesLeft": 3, "articleLimit": 5 } }
回呼是選用的。只有在指定 "pingbackUrl" 屬性時才會啟用。
預設情況下,作為主體,回呼 POST 請求會接收由 "獲勝" 授權端點傳回的授權物件。但是,如果 "local" 服務的設定包含 pingbackAllEntitlements: true
,則主體將包含從所有服務接收到的所有授權的陣列,包括那些未授予存取權的授權。
重要事項: 回呼 JSON 物件以 Content-type: text/plain
傳送。這是故意的,因為它消除了對 CORS 預檢檢查的需求。
將 AMP Reader ID 與發布商 Cookie 結合
為了準確識別讀者,發布商應將 AMP Reader ID 與任何與讀者相關的發布商 Cookie 建立關聯。
注意: 由於 AMP Reader ID 的建立方式,對於跨不同裝置和瀏覽器的同一個使用者,可能會有多個 AMP Reader ID,因此發布商必須注意適當處理。
"iframe" 模式
在 "iframe" 模式下,授權和回呼是透過向發布商提供的 iframe 傳送訊息來提供的,而不是透過 CORS 請求傳送到指定的授權和回呼端點。
在 iframe 模式下,authorzationUrl
和 pingbackUrl
會被刪除,並替換為
- "iframeSrc" - 發布商提供的 iframe
- "iframeVars - 要傳送至 iframe 的 AMP 變數
- "type" - 必須為 "iframe"
"local" 服務在 "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>
"local" 服務中的屬性 (遠端模式)
- "type" - 選用類型,預設為 "remote"
- "authorizationUrl" - 授權端點網址。
- "pingbackUrl" - 回呼端點網址。
- "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
,或從 score
對應表中省略它。
可用的評分因素
supportsViewer
在服務可以與此頁面檢視的目前 AMP 檢視器環境合作時傳回1
。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 頁面層級設定的兩個主要屬性
- 使用者必須獲得授權才能檢視內容的產品 ID:
productID
。 - 此內容目前是否需要此產品:
isAccessibleForFree
。
可用的設定將提供具有 isAccessibleForFree
屬性和指定 productID
的 Product
子項目的 NewsArticle
類型項目。設定會在找到 productID
和 isAccessibleForFree
後立即解析。因此,建議將設定盡可能放在 DOM 樹狀結構的較高位置。
支援 JSON-LD 和 Microdata 格式。
如需標記的更多詳細資訊,請參閱 此處。
範例
在這些範例中
- 產品 ID 為 "norcal_tribune.com:basic" (
"productID": "norcal_tribune.com:basic"
)。 - 此文件目前已鎖定 (
"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-dialog
和 subscriptions-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
動作流程如下
- 會對以下格式的指定網址發出請求
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.
- 登入頁面將作為正常的網頁開啟,沒有任何特殊限制,但它應該作為 瀏覽器對話方塊 運作良好。
- 一旦發布商驗證了讀者身分,發布商應將發布商 Cookie 與 AMP Reader ID 建立關聯,如 將 AMP Reader ID 與發布商 Cookie 結合 區段中所述。
- 一旦登入頁面完成其工作,它必須重新導向回指定的 "傳回網址",格式如下
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.
- 如果傳回
success=true
訊號,AMP Runtime 將重複呼叫授權和回呼端點,以更新文件的狀態並報告具有新存取設定檔的 "檢視"。
當讀者按一下具有 subscriptions-action="login"
屬性的按鈕時,將觸發 login
動作。例如
<button subscriptions-action="login"> Already subscribed? Login now </button>
subscribe (訂閱)
subscribe
流程如下
- 會對以下格式的指定網址發出請求
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.
- 訂閱頁面將作為正常的網頁開啟,沒有任何特殊限制,但它應該作為 瀏覽器對話方塊 運作良好。
- 一旦訂閱頁面完成其工作,它必須重新導向回指定的 "傳回網址",格式如下
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.
- 如果傳回
success=true
訊號,AMP Runtime 將重複呼叫授權和回呼端點,以更新文件的狀態並報告具有新存取設定檔的 "檢視"。
當讀者按一下具有 subscriptions-action="subscribe"
屬性的按鈕時,將觸發 subscribe
動作。例如
<button subscriptions-action="subscribe"> Subscribe now </button>
分析
amp-subscriptions
元件觸發以下分析訊號
subscriptions-started (訂閱開始)
- 當
amp-subscriptions
初始化時觸發。 - 資料:無。
subscriptions-service-registered (訂閱服務已註冊)
- 當
amp-subscriptions
能夠解析服務的執行個體時觸發。服務可以隨時在頁面上初始化自身。 - 資料:選取服務的
serviceId
。
subscriptions-service-activated (訂閱服務已啟用)
- 當選取並啟用已設定的服務以供使用時觸發。請參閱 服務評分因素。
- 資料:選取服務的
serviceId
。
subscriptions-entitlement-resolved (訂閱授權已解析)
- 當服務的授權擷取完成時觸發。
- 資料:選取服務的
serviceId
和action
。
subscriptions-access-granted (訂閱存取已授予)
- 當選取服務的授權授予文件存取權時觸發。
- 資料:選取服務的
serviceId
。
subscriptions-paywall-activated (訂閱付費牆已啟用)
- 當選取服務的授權未授予文件存取權時觸發。
- 資料:選取服務的
serviceId
。
subscriptions-access-denied (訂閱存取遭拒)
- 當選取服務的授權拒絕文件存取權時觸發。
- 資料:選取服務的
serviceId
。
subscriptions-service-re-authorized (訂閱服務已重新授權)
- 當服務的重新授權完成時觸發。服務可以在執行任何動作 (例如
login
) 後請求重新授權。在重新授權完成後,會為服務擷取新的授權。 - 資料:選取服務的
serviceId
。
subscriptions-action-delegated (訂閱動作已委派)
- 在委派的服務動作移交給其他服務之前觸發。請參閱
[subscription-service][15]
。 - 資料:選取服務的
serviceId
和委派的action
。
subscriptions-action-ActionName-started (訂閱動作-動作名稱-開始)
- 當動作
ActionName
的執行開始時觸發。 - 資料:無。
subscriptions-action-ActionName-failed (訂閱動作-動作名稱-失敗)
- 當動作
ActionName
的執行因任何原因失敗時觸發。 - 資料:無。
subscriptions-action-ActionName-success (訂閱動作-動作名稱-成功)
- 當動作
ActionName
的執行結果回報為成功時觸發。 - 資料:無。
subscriptions-action-ActionName-rejected (訂閱動作-動作名稱-遭拒)
- 當動作
ActionName
的執行結果回報為失敗時觸發。 - 資料:無。
subscriptions-link-requested (訂閱連結已請求)
- 當選取服務啟動訂閱帳戶連結請求時觸發。
- 資料:選取服務的
serviceId
。
subscriptions-link-complete (訂閱連結已完成)
- 當選取服務完成訂閱帳戶連結時觸發。
- 資料:選取服務的
serviceId
。
subscriptions-link-canceled (訂閱連結已取消)
- 當選取服務啟動的訂閱帳戶連結請求已取消時觸發。
- 資料:選取服務的
serviceId
。
您已經閱讀這份文件十幾次,但它仍然沒有真正涵蓋您的所有問題?也許其他人也有同樣的感覺:在 Stack Overflow 上與他們聯繫。
前往 Stack Overflow 發現錯誤或缺少功能?AMP 專案強烈鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的持續參與者,但我們也歡迎您針對您特別熱衷的問題做出一次性的貢獻。
前往 GitHub