帳號連結

帳號連結與 Messenger 開放平台提供的其他 WebView 功能不同;帳號連結只能透過「登入」按鈕開始,而不能從 Bot 的常設功能表網址按鈕,或已經開啟的 WebView 流程或聊天擴充套件內開始。

使用這些功能的開發人員現在可以利用 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 用戶認為登入有好處時,即可提示用戶登入。

為您的 Bot 設定用戶拒絕登入時的適當回覆。

在用戶登入後,提供清楚明瞭的確認通知並加入親切的問候語句。

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

如果沒有必要,不要急著請用戶進行帳號連結;您可以先讓用戶熟悉一下 Bot 的運作方式。

建議的設計流程

  1. 使用訊息提示用戶登入,並在訊息中加入我們的「帳號連結」按鈕。
  2. 在帳號連結網頁檢視中,展示您的登入頁面(包含「建立帳號」選項)。請確保登入頁面可在行動裝置畫面完整顯示並正常運作。
  3. 成功登入後,在網頁檢視中顯示確認訊息。用戶必須自行關閉此訊息。
  4. 接著,在對話串中加入親切的問候語句及/或後續步驟,包含登出選項。