为什么发布到Facebook页面会产生"用户未授权应用程序"

bro*_*eib 15 facebook-graph-api

我已经阅读了fb文档和编写代码以将消息发布到facebook"页面",但是我收到的错误是我不希望看到的:

(#200) The user hasn't authorized the application to perform this action
Run Code Online (Sandbox Code Playgroud)

这就是我所做的:

  • 我设置了一个facebook应用程序,它提供了我的APP_IDAPP_SECRET.
  • 我设置了一个测试facebook"页面".让我们将其fb id称为PAGE_ID.
  • 使用OAuth为用户获取USER_ACCESS_TOKEN范围"publish_actions,manage_pages".我在重定向到facebook auth页面时接受了我的应用程序请求的权限.
  • https://graph.facebook.com/me/accounts使用了GET USER_ACCESS_TOKEN,我收到了一份我管理的页面列表,包括我要发布的页面.

我的页面的这个数据块看起来像:

{
  "data": [
    {
      "category": "Community", 
      "name": "My Generic Test Page", 
      "access_token": PAGE_ACCESS_TOKEN, 
      "id": PAGE_ID, 
      "perms": [
        "ADMINISTER", 
        "EDIT_PROFILE", 
        "CREATE_CONTENT", 
        "MODERATE_CONTENT", 
        "CREATE_ADS", 
        "BASIC_ADMIN"
      ]
    }, 
    ....
  ]
}
Run Code Online (Sandbox Code Playgroud)

然后我用它PAGE_ACCESS_TOKEN向页面发帖子:

  • https://graph.facebook.com/PAGE_ID/feedmessage等于的字段进行了POSTThis is a test post.

Facebook回归:

{
  "error": {
    "message": "(#200) The user hasn't authorized the application to perform this action", 
    "type": "OAuthException", 
    "code": 200
  }
}
Run Code Online (Sandbox Code Playgroud)

使用令牌调试器,我可以确认我PAGE_ACCESS_TOKEN的有效,并且具有范围:manage_pagespublish_actions.

我在哪里缺少授权申请?我需要额外的范围吗?我是否错过了在facebook授权屏幕上点击的内容?是否有我错过的应用程序设置?经过几天的调试,我必须对这个问题视而不见.: - |

林果皞*_*林果皞 27

例如,您应该添加名为status_update的权限

https://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=145634995501895&redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html%3Fdisplay%3Dpage&response_type=token&fbconnect=1&perms= status_update&from_login = 1&m_sess = 1&RCOUNT = 1

在此输入图像描述

并且我能够使用我刚才获得的访问令牌发布到我喜欢的页面: 在此输入图像描述

如果您想以页面管理员身份发布,则需要manage_pages和status_update权限,例如

https://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=145634995501895&redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html%3Fdisplay%3Dpage&response_type=token&fbconnect=1&perms= manage_pages%2Cstatus_update&from_login = 1&m_sess = 1&RCOUNT = 1

在此输入图像描述

干杯

  • @ broc.seib如果您访问https://developers.facebook.com/tools/explorer,请单击"获取访问令牌"按钮,然后您可以在"扩展权限"选项卡下找到"status_update".官方文档并不总是完整和最新的. (3认同)
  • @iain你现在需要2.3的publish_pages权限.https://developers.facebook.com/docs/apps/changelog (3认同)
  • @AndrewSmiley你在开玩笑吗?当我发布答案时,Graph API的版本仅为v1.0.您是否希望答案对Graph API v100仍然有效? (3认同)
  • 是! "status_update"是我失踪的权限.谢谢.现在为什么我不能在所有关于权限的facebook文档中找到"status_update"?https://developers.facebook.com/docs/concepts/login/permissions-login-dialog/ (2认同)

syl*_*dor 3

status_update不再使用了。要在页面上发布,我必须同时使用manage_pagespublish_pages