AMP

登入

第一次進入頁面時,您會看到 2 則留言和一個登入按鈕。

如果您在程式碼中尋找登入按鈕,您會找到

<span amp-access="NOT loggedIn" role="button" tabindex="0" amp-access-hide>
  <h5>Please login to comment</h5>
  <button on="tap:amp-access.login-sign-in" class="button-primary comment-button">Login</button>
</span>

amp-access 相關屬性的行為取決於 amp-access 的全頁面設定,在本例中為以下設定

<script id="amp-access" type="application/json">
  {
    "authorization": "https://ampbyexample.com/samples_templates/comment_section/authorization?rid=READER_ID&url=CANONICAL_URL&ref=DOCUMENT_REFERRER&_=RANDOM",
    "noPingback": "true",
    "login": {
      "sign-in": "https://ampbyexample.com/samples_templates/comment_section/login?rid=READER_ID&url=CANONICAL_URL",
      "sign-out": "https://ampbyexample.com/samples_templates/comment_section/logout"
    },
    "authorizationFallbackResponse": {
      "error": true,
      "loggedIn": false
    }
  }
</script>

授權端點部署為 AMPByExample 的一部分。提供此端點是頁面發布者的責任。在此範例案例中,為了簡化起見,我們實作了基本邏輯,以便在收到此請求時,伺服器會讀取名為 ABE_LOGGED_IN 的 Cookie 值。如果 Cookie 不存在,我們會傳回包含 loggedIn = false 的 JSON 回應。因此,使用者第一次進入頁面時,此請求將傳回 loggedIn = false,並且會顯示登入按鈕。

再次查看按鈕的 HTML 程式碼,透過使用 on="tap:amp-access.login-sign-in",我們指定一旦使用者點擊按鈕,就應使用上方 JSON 中指定的 URL

{
    "login": {
    "sign-in": "https://ampbyexample.com/samples_templates/comment_section/login?rid=READER_ID&url=CANONICAL_URL"
  }
}

注意 – 請注意,可以在登入節點內定義不同的 URL,在本例中,我們定義了 sign-in,稍後我們將定義 sign-out

登入頁面是一個非 AMP 頁面,我們在其中填入登入名稱和密碼值,以求簡化。請注意 returnURL 隱藏輸入類型的用法,它由 AMPByExample 伺服器透過伺服器端範本引擎填入。伺服器從名為 return 的參數讀取此值,該參數由 AMP 程式庫自動新增至登入 URL。

在以下範例中,當您按一下登入按鈕時,return 參數的值會新增至請求。您可以使用 Chrome DevTools 主控台並導覽至「網路」分頁來探索此值。

一旦 AMPByExample 伺服器收到來自登入頁面的 POST 請求,且登入名稱和密碼正確,它就會將請求重新導向至我們上面提及的 returnURL,並附加 #success=true 參數。現在,AMP 執行階段可以授權頁面,並最終允許您新增留言。

務必瞭解 AMP 執行階段的作用以及伺服器應執行的操作,因為伺服器的實作是頁面發布者的責任。

快速回顧一下

  • AMP 執行階段會自動將 return 參數新增至登入 JSON 物件內指定的登入請求
  • AMP 執行階段會關閉登入頁面,並重新導向至 return URL 參數指定的頁面
  • 伺服器應在使用者按一下登入按鈕後協調回應

提示 – 您也可以在 amp-access 中找到關於此流程的更詳細說明。