facebook-graph-api - Facebook 登录将页面连接到应用程序,页面显示已订阅但应用程序未订阅

标签 facebook-graph-api facebook-javascript-sdk facebook-login chatbot

问题:

我无法使用 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 页面的设置,我的应用程序会显示在“连接的应用程序”下:

enter image description here

我什至将“切换协议(protocol)的主要接收者”页面设置为应用程序。

enter image description here

但是发送到 Facebook 页面的消息未被应用程序的 Webhook 接收。当我检查我的应用程序设置时,它没有在“订阅的页面”下显示我的页面。

enter image description here

我希望主页的消息会发送到我的应用程序和 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/

相关文章:

android - 发布版本 Android 中的 facebook 集成 Key Hash 错误

iphone - iOS Facebook SDK,如何在App内登录,而不是在safari中登录

ios - 更新 pod 后使用未声明的类型 'GraphRequestResult'

redirect - 不支持 hello.js facebook 登录重定向 uri,应用程序 ID 无效

android - "Argument ' 上下文 ' cannot be null"

javascript - Facebook 分享帖子中的自定义链接

facebook - 如何从 FB 应用程序中删除辅助产品?

facebook - publish_checkins 权限 2013 年 7 月 重大更改

javascript - 获取 Parse Javascript Facebook 用户登录和注册以使用 jquery 站点的问题

ios - 实现 Facebook 登录 IOS