来自 Facebook Messenger 机器人对话的 API 身份验证

Posted

技术标签:

【中文标题】来自 Facebook Messenger 机器人对话的 API 身份验证【英文标题】:API authentication from a facebook messenger bot conversation 【发布时间】:2016-08-04 20:06:32 【问题描述】:

在 facebook messenger 平台上与机器人对话时,使用外部 API 进行身份验证的最佳方式是什么?

举个广泛的例子,我希望我的机器人用户在他们自己的外部网站个人资料上创建项目。有没有办法从用户那里获取登录信息,或者将我的机器人连接到外部网站,而无需用户明确向机器人发送带有用户名和密码的消息?

我在User Profile API 下的文档中找到的内容:

您可以使用用户个人资料 API 中的人名或个人资料照片来个性化对话。要获取此信息,请向 https://graph.facebook.com/v2.6/?fields=first_name,last_name,profile_pic&access_token= 发出 GET 请求。阅读发送 API 参考中的更多详细信息。

这不是我想要的,但它有帮助。以下是来自文档的更多信息:

用户配置文件 API

请求

curl -X GET "https://graph.facebook.com/v2.6/<USER_ID>?fields=first_name,last_name,profile_pic&access_token=<PAGE_ACCESS_TOKEN>"

回应

"first_name": "Peter", "last_name": "Chang", "profile_pic": "https://fbcdn-profile-a.akamaihd.net/hprofile...70ec9c19b18"

【问题讨论】:

【参考方案1】:

这取决于他们是如何进来的。

    如果他们来自您的网站,您可以使用他们帐户中的“发送至信使”按钮。使用 pass through 参数将您的帐户链接到用户线程。 这是documentation的摘录:

插件接受您定义的传递参数。此参数通过回调发送回给您。您可以使用它将身份验证事件链接到个人和/或交易。例如,一个人可以输入特定交易的在线流程并单击“发送至信使”按钮。您可以传入数据以了解哪个用户和事务与身份验证事件相关联。您应该对该参数进行编码和加密。

    如果他们直接访问您的机器人,您必须在对话中向他们提供某种登录名(您的登录名)。这将发生在指向移动 Web URL 的链接中。

【讨论】:

这正是我想要的,谢谢!我将编辑您的答案以包含文档中的更多详细信息。 @pschang 如果我想在 bot 中实现第三方 Oauth 流程,比如获取用户的 twiiter 帐户的访问令牌,最佳实践应该是什么?好像用户提供了他的 Twitter 用户名、密码,这不是一个好习惯……有什么想法吗? @ANinJa 我需要同样的解决方案,你有办法解决吗? :) @VaclovasRekašiusJr.您正在实施什么样的用例? @ANinJa 我想通过 Messenger 通用消息实现 facebook 登录(比如说一个简单的按钮)。

以上是关于来自 Facebook Messenger 机器人对话的 API 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Webhook Messenger 获取页面 ID

Bot Framework v4 + Messenger 区域设置

Facebook Messenger 机器人反应通知

为 Messenger Bots(又名深度链接)创建自定义入口点(链接)

Facebook Messenger 平台/机器人欢迎配置的奇怪错误

Facebook Messenger 检测关闭 web 视图(移动)