尝试阅读Facebook页面消息时出现OAuth错误

时间:2012-10-09 12:34:31

标签: facebook facebook-graph-api facebook-graph-api-v2.0

我正在尝试阅读Facebook页面的收件箱和发件箱。我的第一种方法是尝试直接访问page节点的收件箱。下面的URI表示我是如何尝试的:

/{page-id}/inbox

以下是错误消息:

  

您只能访问当前用户的“收件箱”连接。

然后我尝试按照某些地方的建议访问conversationsthreads边缘:

/{page-id}/conversations

/{page-id}/threads

两个URI都会产生以下错误:

  

(#298)您必须是该应用程序的开发人员

我无法弄清楚到底出了什么问题?有一些关于Facebook的错误报告,与“#(298)”相关,几个月前有报道,但我不相信它到目前为止还没有修复。

欢迎任何替代方法。

1 个答案:

答案 0 :(得分:3)

如果您使用用户访问令牌而不是页面访问令牌,则会出现此问题。

我在Facebook Graph API Explorer中这样做,我以为我正在使用页面访问令牌,但我不是。当我从API资源管理器中运行{page-id}/conversations?access_token={page_access_token}时,它在顶部的访问令牌字段中有{user_access_token}。这是在资源管理器发送的实际请求中发送的(如Chrome的开发工具中所示)。即,API Explorer忽略了我输入的{page_access_token}并使用了访问令牌字段中的值。

清除访问令牌字段或在该字段中输入{page_access_token}会导致发送预期的{page_access_token}。在浏览器和API Explorer中执行某些步骤向我展示了方法。

以下是解决此问题的步骤:

  1. 通过从API资源管理器中点击获取访问令牌获取具有manage_pagesread_page_mailboxes权限*的用户访问令牌,选择指定的权限或访问以下网址。

    https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}&request_type=token&scope=manage_pages,read_page_mailboxes
    
  2. 获取网页访问令牌:从API资源管理器中运行/me/accounts或访问以下网址。

    https://graph.facebook.com/v2.0/me/accounts?method=GET&format=json&suppress_http_code=1&access_token={user-access-token}
    
  3. 获取对话:使用上述步骤中的页面访问令牌(如果使用API​​资源管理器,将其粘贴在访问令牌字段中)以获取对话* *运行/{page-id}/conversations或访问以下网址。

    https://graph.facebook.com/v2.0/{page-id}/conversations?method=GET&format=json&suppress_http_code=1&access_token={page-access-token}
    
  4. 不需要{p> * read_mailbox权限,这与我在上面的评论中所说的相反。实际上,错误消息不正确,尝试使用用户访问令牌错误地访问页面边缘会导致用户访问错误,而不是无效的页面访问令牌错误。

    **用户必须是Facebook页面的管理员才能访问其对话。