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

时间:2013-04-03 19:21:11

标签: facebook-graph-api

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

(#200) The user hasn't authorized the application to perform this action

这就是我所做的:

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

我页面的这个数据块如下:

{
  "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"
      ]
    }, 
    ....
  ]
}

然后我使用PAGE_ACCESS_TOKEN向页面发布消息:

  • 我在https://graph.facebook.com/PAGE_ID/feed上发帖,其中message字段等于This is a test post.

Facebook回归:

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

使用token debugger,我可以确认我的PAGE_ACCESS_TOKEN有效,并且具有范围:manage_pagespublish_actions

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

4 个答案:

答案 0 :(得分:27)

答案 1 :(得分:3)

嗯,这似乎是我们大多数人在尝试在社交网络中进行活动时常犯的错误。在尝试建立开放图表操作之前,您需要在初始授权请求中设置权限。默认情况下,您只能获得对其基本信息的“只读”访问权限。 在认证时,设置权限是Facebook和LinkedIn API的必备条件。

请参阅Facebook open graph permissions中的public_actions部分,并在授权码中进行相关更改,以解决问题。

答案 2 :(得分:3)

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

答案 3 :(得分:1)

我发现获得有效令牌的最佳方法是检查权限是通过Graph API Explorer但是Facebook的文档广泛并不总是最容易理解。

在资源管理器中,您必须同时查看:

  1. 应用程序目前处于最顶层并且相当微妙,我多久都错过了这个。
  2. 获取令牌下拉您单击以获取令牌的内容,当您单击箭头时,您可以选择您有权访问的页面和其他项目以选择令牌。