帐户绑定

帐户绑定独立于 Messenger 平台可用的其他网页视图功能,只能通过登录按钮启动,不能通过智能助手的固定菜单网址按钮、已经打开的网页视图流程或聊天插件启动。

现在,使用这些功能的开发者可以利用 Messenger 功能插件中的 getContext() 函数,以安全的方式获得用户编号。之后,智能助手可以使用此用户编号绑定用户帐户或提供个性化体验。

目前,只有 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 一起作为帐户绑定 Webhooks 事件传回。未能成功传递这一参数将导致绑定流程中止。

Webhooks 事件

成功的绑定流程将触发帐户绑定事件,以便传递用户的公共主页范围编号 (PSID)。

您必须注册帐户绑定回调事件。未确认该 Webhooks 事件将导致绑定流程中止。

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 内创建帐户,令该帐户适用于其他平台。

在上下文相关,即在智能助手用户可以看到执行相关操作的好处时,提示登录。

考虑用户拒绝登录时智能助手应如何反应。

登录后,提供明确的确认消息及友好的欢迎语。

如果用户通过 Messenger 与您互动,请不要使用帐户绑定功能。您可以通过对话编号存储帐户信息。

尽量不要立即要求绑定帐户;让用户先感受一下您的智能助手。

推荐设计流程

  1. 使用包含帐户绑定按钮的消息提示登录。
  2. 在帐户绑定网页视图中显示登录页面(包括创建帐户选项)。确保能够在移动设备屏幕上正常显示并良好运行。
  3. 成功登录后,在网页视图中显示确认消息。用户需要过后自行忽略该消息。
  4. 接下来在对话中显示友好的感谢消息或后续步骤,包括退出选项。