帳戶連結

「帳戶連結」與 Messenger 平台中其他可用的網頁檢視功能有別。這項功能只能透過登入按鈕啟動,無法從 BOT(機械人程式)的常駐選單網址按鈕,以及已開啟的網頁檢視流程或聊天洽談附加程式內啟動。

凡是使用這些功能的開發人員,現在都可透過 Messenger 擴充功能的 getContext() 函式,以安全的方式取得用戶編號。屆時,Bot 便可運用這個編號來連結用戶帳戶或提供個人化體驗。

目前僅 iOS 版和 Android 版 Messenger 應用程式支援帳戶連結功能。

當用戶與您的企業展開對話,您可以將他們視為已在您企業擁有帳戶的顧客。為了協助這項辨識工作,我們建立了一個安全的通訊協定,可以連結與取消連結 Messenger 用戶身分與您的企業用戶身分之間的連結。

帳戶連結可以讓您邀請用戶使用您的驗證流程登入,並於完成後收到 Messenger 專頁範圍編號(PSID)。這樣,您便可以向用戶提供更安全、更個人化與更有相關性的體驗。

內容

連結程序

帳戶連結流程分為幾個簡單的步驟。

  1. 使用登入按鈕註冊回呼網址。
  2. 當用戶開始帳戶連結流程後,Messenger 平台就會觸發註冊網址。redirect_uriaccount_linking_token 參數會附加在已登記的回呼中。
  3. 待連結完成後,將用戶重新導向 redirect_uri 所提供的位置,然後附加 authorization_code 參數(由您自行定義)以確認連結。
  4. (此為選用步驟)使用帳戶連結端點以檢索用戶的專頁範圍編號(PSID)。除非需要用戶的 PSID 才能進行連結流程,否則如非遇到特殊狀況,您都無需執行這個步驟。

帳戶取消連結的啟動方式如下:

回呼

用戶觸發帳戶連結時,Messenger 平台就會觸發帳戶連結網址redirect_uriaccount_linking_token 參數會附加在網址回呼中。

<yourAccountLinkingUrl>
  ?account_linking_token=ACCOUNT_LINKING_TOKEN
  &redirect_uri=CALLBACK_URL

如果帳戶連結成功,您必須將瀏覽器重新導向 redirect_uri 參數中指定的網址,並附加您自行定義的 authorization_code 參數。請注意,網址可能已包含參數,所以請按照指示附加授權碼:

<redirect_uri>
  &authorization_code=AUTHORIZATION_CODE

如果帳戶連結失敗,請將瀏覽器重新導向以參數形式傳遞給您的 redirect_uri,但不要附加 authorization_code

參數

參數名稱 說明

redirect_uri

由 Messenger 新增的重新導向 URI;您必須在驗證流程的最後步驟將瀏覽器重新導向這個位置。此參數可能包含編有參數的網址。

account_linking_token

由 Messenger 傳遞的短效憑證;您需要在重新導向機制的其中一環傳回這個憑證。這個憑證的有效時間只有 5 分鐘、已經加密,而且對於每個用戶均為不重複。
您可以使用這個憑證呼叫 PSID 檢索端點,以便擷取對應的 PSID。

authorization_code

您提供的代碼,用來確認連結成功。Messenger 平台會連同用戶的 PSID,以帳戶連結 Webhook 事件形式傳回這個代碼。如果無法傳回這個參數,連結流程便會中斷。

Webhook 事件

成功的連結流程會觸發帳戶連結事件,以傳送用戶的專頁範圍編號(PSID)。

您必須登記帳戶連結回呼事件。如果無法確認這個 Webhook 事件,連結流程便會中斷。

PSID 檢索端點

在特定情況下,您需要在連結流程中檢索用戶的專頁範圍編號(PSID)。為處理此情況,我們提供了 PSID 檢索端點,讓您以有效且未過期的 account_linking_token 擷取用戶的 PSID。

要求

curl -X GET "https://graph.facebook.com/v2.6/me?access_token=PAGE_ACCESS_TOKEN \
      &fields=recipient \
      &account_linking_token=ACCOUNT_LINKING_TOKEN"

回應

{
  "id": "PAGE_ID",
  "recipient": "PSID"
}    

在特定情況下,您需要從後端透過程式輔助的方式取消連結用戶專頁範圍編號(PSID)。為處理此情況,我們提供了 PSID 取消連結端點,讓您以有效的 PSID 取消連結用戶的帳戶。

要求

curl -X POST -H "Content-Type: application/json" -d '{
   "psid":"PSID"
}' "https://graph.facebook.com/v2.6/me/unlink_accounts?access_token=PAGE_ACCESS_TOKEN"

回應

{
  "result": "unlink account success"
}

最佳操作實例

如果您在 Messenger 之外擁有用戶帳戶系統,建議使用「帳戶連結」。

讓用戶在 Messenger 中建立帳戶,並用於其他地方。

如果情況適用,可以提示登入;適用情況亦即是登入對用戶有實際好處的情況。

考慮 Bot 在用戶拒絕登入時應該如何反應。

在用戶登入後提供清楚的確認與友善的歡迎訊息。

如果用戶會透過 Messenger 與您互動,請勿使用「帳戶連結」。您可以透過對話串編號儲存帳戶資訊。

如非必要,請儘量避免將「帳戶連結」當作必要條件;請讓用戶先了解您的 Bot。

建議的設計流程

  1. 以包含我們「帳戶連結」按鈕的訊息提示登入。
  2. 在「帳戶連結」網頁檢視中顯示登入頁面(包含「建立帳戶」選項)。確保畫面美觀,且可在流動裝置螢幕上妥善運作。
  3. 成功登入後,在網頁檢視中展示確認訊息。用戶稍後需要自行關閉這則訊息。
  4. 然後,展示友善的感謝訊息,以及/或者在對話串的後續步驟中提供「登出」選項。