Facebook Graph API->用户/事件返回空数组

时间:2019-05-01 08:22:11

标签: facebook facebook-graph-api facebook-php-sdk

首先,解释一下情况:

  • 我的应用已通过user_events的应用审核批准(以下屏幕截图)
  • 我正在使用实际用户帐户在生产应用程序上进行测试(对admin用户进行测试会返回误报)
  • 调用{user_id}/可以正常工作并返回基本配置文件。
  • 调用{user_id}/permissions可以正常工作并返回权限(inc user_events,下面的屏幕截图)
  • 调用{user_id}/events总是“有效”,但是返回并清空数组。

我尝试用'me'代替登录的fb_user_id进行测试,并得到相同的空数据结果。如果我使用自己的管理员测试帐户进行测试,则user_events数据始终填充有数据。我尝试使用的参数少于/没有下面的屏幕截图,对于测试用户而言一切正常,但对于实时用户而言则并非如此。

非常感谢您的帮助!

屏幕截图:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

与其他用户进行测试

我的应用程序处于开发模式。您还可以轻松创建和使用testing users, customize them to your needs and log in to the account,也可以将真实的Facebook用户添加到您的帐户中,然后为他分配测试人员角色。

enter image description here

我通过Ellison Clinton登录并创建了一个事件

enter image description here

我可以通过api检索/events

enter image description here

然后我将Facebook应用切换到正式版,并从测试角色中删除用户

enter image description here

我可以检索用户信息

enter image description here

但我无法检索先前创建的事件

enter image description here

完成授权过程

也许您没有完成user_events的审核过程?

您可以访问the data in development,但不能在生产环境中访问。我也没有完成审核过程,但是可以访问user_events数据。

  

”“如果您的应用处于开发模式,则应该能够获得对应用中具有角色的任何人的任何权限的页面访问令牌。如果您只想管理自己页面或用户页面上的帖子,在您的应用上具有角色,您就可以在开发模式下完成此任务,而无需提交应用审查。” -来自Facebook开发人员支持的回复

您可能需要执行

还要考虑filing a bug并在此处添加链接

如何调试Facebook Graphql

唯一可能的情况是您使用的令牌不包含user_events权限。

/users/events的令牌缺少user_events权限的请求将返回状态200data: [],响应中没有错误消息。

我在Graphql Facebook Explorer上测试了此方案,该请求未返回错误消息。调试消息显示在Api explorer中,但未明确包含在响应中。

enter image description here

我将此请求导出为curl,这是结果

~ $ curl -i -X GET  "https://graph.facebook.com/v3.3/10210855772523702/events?access_token=TOKEN"
HTTP/2 200 
content-type: application/json; charset=UTF-8
facebook-api-version: v3.3
x-fb-debug: h1WInt+yxtkm/1isTGfG2cd9JX8HAx5R5A9U/QC4k2lRrJ5mrKYaInR2Mm6XQ5UOrdSquAgWKnYj2jiTw6fwLQ==

{"data":[]}

您可以像下面的curl示例中那样获取调试信息passing the param debug=all in your /users/events request

~ $ curl -i -X GET  "https://graph.facebook.com/v3.3/10210855772523702/events?debug=all&access_token=TOKEN"
HTTP/2 200 
{"data":[],"__debug__":{"messages":[{"message":"The field 'events' is only accessible on the User object after the user grants the 'user_events' permission.","type":"warning"}]}}

我的建议是在请求中添加参数?debug=all,并在问题中包含响应结果,以便我们协助您进行故障排除。

下面是我用Graphql Facebook Explorer执行的另一项测试,我能够检索到事件。


步骤1。转到Facebook Graph API Explorer

enter image description here

STEP 2.生成令牌

  1. get token -> get user access token并添加user_events权限

步骤3。运行查询

使用端点/me?fields=id,name检索您的用户ID,然后:

  1. 获取/{user-id}
  2. 获取/{user-id}/permission
  3. 获取/{user-id/events

从下面的图片中可以看到,/events返回data: [],而/permissions端点包含user_events权限。

我的Facebook用户以后没有参加任何活动。创建事件并重复测试将返回一些结果。

下面的图片展示了我的测试用例

enter image description here

enter image description here

enter image description here

enter image description here

答案 1 :(得分:-3)

您是否将“实时”用户“登录”到您的应用程序,然后选择该用户来访问其令牌?只有在那之后,您才能访问该用户的事件等,以防该用户为您授予权限。

1)您必须在您的应用中注册您的应用将被Facebook批准用于应用的哪种访问器。

2)用户必须登录到您的应用程序。 (在照片上的下拉列表中选择用户的令牌)

3)登录到您的应用的用户必须对其事件,帖子等具有开放权限。

Choose a user here