问题:
我无法使用 Facebook 登录将我的 Facebook App+Webhook 完全订阅到 Facebook 页面。主页订阅应用程序,但应用程序+Webhook 没有收到来自主页的任何消息。
我遵循的步骤:
<强>0。应用处于开发者模式并启用了这些权限:
manage_pages - before review
read_page_mailboxes - before review
pages_messaging - approved review
(在开发模式下,我以应用程序和页面的管理员身份进行测试)
<强>1。用户单击“登录”按钮并请求这些权限:
email, manage_pages, pages_show_list, pages_messaging, pages_messaging_phone_number, pages_messaging_subscriptions, public_profile
<强>2。用户点击接受以授予所有这些权限。
这在使用 user_access_token
向 /me/permissions
发送 GET 请求时返回
0: {permission: "email", status: "granted"}
1: {permission: "manage_pages", status: "granted"}
2: {permission: "pages_show_list", status: "granted"}
3: {permission: "pages_messaging", status: "granted"}
4: {permission: "pages_messaging_phone_number", status: "granted"}
5: {permission: "pages_messaging_subscriptions", status: "granted"}
6: {permission: "public_profile", status: "granted"}
<强>3。向 /me/account
发送 GET 请求以获取有关用户页面的数据数组。
用户的 Facebook 页面,每个都返回一个 page_id
和一个 page_access_token
。
data: {
0: {
access_token: "PAGE_ACCESS_TOKEN"
category: "Business Service"
category_list: {
0: {id: "xxxxxx", name: "Business Service"}
}
id: "PAGE_ID"
name: "PAGE_NAME"
tasks: ["ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE"]
}
}
<强>4。显示 PAGE_NAME 供用户选择订阅我的 Facebook 应用程序。
用户点击适当的页面触发第 5 步。
<强>5。发送 POST 请求到 /PAGE_ID/subscribed_apps
我为用户点击的页面使用了正确的 PAGE_ACCESS_TOKEN。
我包括这些 subscribed_fields
var subscribeAppFields = [
"messages",
"messaging_optins",
"messaging_postbacks",
"messaging_handovers",
"standby"
];
...
FB.api( "/"+pageID+"/subscribed_apps",
"POST",
{
subscribed_fields : subscribeAppFields,
access_token : pageAccessToken
},
function (response) { ... }
);
发送 GET 请求到 /PAGE_ID/subscribed_apps
返回:
{success: true}
结果
如果我检查 Facebook 页面的设置,我的应用程序会显示在“连接的应用程序”下:
我什至将“切换协议(protocol)的主要接收者”页面设置为应用程序。
但是发送到 Facebook 页面的消息未被应用程序的 Webhook 接收。当我检查我的应用程序设置时,它没有在“订阅的页面”下显示我的页面。
我希望主页的消息会发送到我的应用程序和 Webhook,并且我希望主页名称出现在上图中“已订阅的主页”下。
我可以使用 App Messenger 设置下拉菜单手动将页面订阅到 Webhook,Webhook 将成功接收消息。但在这里使用 Facebook 登录的全部意义在于避免手动执行此操作,这也要求我成为任何想要连接的页面的管理员。
目的是让其他主页所有者授予权限并自动将他们的主页连接到我的应用程序/网络钩子(Hook)/聊天机器人。
问题
如何完成页面 - 应用程序订阅,以便将页面消息传递到应用程序的 Webhook?
我已阅读并关注或尝试过这些:
相关问题
cannot-subscribe-page-to-facebook-app
subscribe-facebook-page-to-external-app
subscribed-apps-page-and-app-access-token-generation
cant-connect-facebook-app-to-facebook-page
subscribe-facebook-test-pages-to-facebook-apps-webhook
chatbot-generate-page-tokens-for-the-pages-you-dont-own-using-facebook-login
文档
Facebook Login
Login Permissions
Access Tokens
Subscribed Apps
最佳答案
解决方案第 1 部分:如果您的页面显示已订阅但您的应用程序没有,则意味着您拥有 USER manage_pages
权限但没有 APP manage_pages
权限已启用。
问题中的所有步骤都是正确的。但它对我来说继续失败。
解决方案第 2 部分:它对我来说仍然失败,因为我用来测试的帐户已经设置了早期尝试的延迟权限,即使我已经更新了应用程序和/或登录有了新的用户/应用权限,在进行新尝试时必须保留旧权限。
所以我必须创建一个全新的用户和测试页面来正确测试更新后的应用程序和登录过程。但这只是为了揭示实际问题。测试登录的更简单的解决方案是:
每次登录(权限授予)尝试后,您必须完全删除您授予应用程序的用户权限。
要重置应用程序的用户权限,请访问:facebook.com/settings?tab=business_tools
关于facebook-graph-api - Facebook 登录将页面连接到应用程序,页面显示已订阅但应用程序未订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54474102/