在开发与我的机器人的Facebook页面无缝集成时,我碰壁。
本质上,我想实现与Chatfuel或Manychat相同的集成,使用您的Facebook帐户登录后,您可以选择要连接到他们的页面,并且一切正常。
我面临的问题是生成正确的令牌,以便将所选页面绑定到我的应用程序(机器人)。根据Facebook文档:
在创建subscribed_apps边缘时,您在端点中使用的页面ID必须与API调用中使用的页面访问令牌的页面ID相匹配。该页面已安装访问令牌所针对的应用。
鉴于该呼叫除了访问令牌外没有其他参数,因此该访问令牌必须足以让Facebook执行以下操作:
这在使用Facebook Graph API Explorer时得到确认,其中选择页面和要绑定的应用并生成适当的访问令牌:
此令牌可在终端中使用cURL正常工作:
$ curl -X POST 'https://graph.facebook.com/v3.0/<MY_APP_ID_HERE>/subscribed_apps?access_token=<TOKEN_PASTED_FROM_GRAPH_API_EXPLORER>'
{"success":true}
使用Facebook Access令牌调试器(访问令牌左侧的信息图标,然后在访问令牌工具中打开),确认该令牌同时知道该页面和该应用程序必须连接。
问题是,这些与页面应用程序相关的令牌是如何以编程方式生成的?我似乎在Facebook文档中找不到正确的API调用,而且它绝对有可能,因为Chatfuel和Manychat正在这样做。
提前感谢您对Lars Schwarz和社区的支持!
答案 0 :(得分:2)
为Alex的答案添加一些细节,以使其更加完整。
在将应用程序订阅到页面时,Facebook需要:
Facebook如何知道这一切?
1 来自Facebook登录发生在页面上下文中的事实,实际上,Facebook的Javascript代码包含您的appId:
js.src = 'https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0&appId=<YOUR_APP_ID_IS_HERE>&autoLogAppEvents=1';
2 来自用于将应用程序订阅到页面的URL中的page_id:
https://graph.facebook.com/v3.0/ YOUR_APP_ID_HERE / subscribed_apps?access_token = YOUR_ACCESS_TOKEN_HERE
3 来自访问令牌,该访问令牌是通过Facebook登录在APP的上下文中获得的,该访问令牌作为用于向页面订阅应用的URL中的参数传递的:
https://graph.facebook.com/v3.0/YOUR_APP_ID_HERE/subscribed_apps?access_token= YOUR_ACCESS_TOKEN_HERE
答案 1 :(得分:1)
为此,您需要在网站/客户门户网站上放置FB Login,并请求pages_messaging和manage_pages权限。登录的人必须是页面管理员。
一旦为您的应用授予了该页面的权限,就可以按照以下说明生成页面访问令牌: