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

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

首先说明一下情况:

  • 我的应用已通过 user_events 的 App Review 批准(下面的屏幕截图)
  • 我正在使用真实用户帐户对生产应用程序进行测试(使用管理员用户进行测试会返回误报)
  • 调用 {user_id}/ 有效并返回基本配置文件。
  • 调用 {user_id}/permissions 有效并返回权限(inc user_events,下面的屏幕截图)
  • 调用 {user_id}/events 始终“有效”但返回空数组。

我尝试使用“我”而不是登录的 fb_user_id 进行测试,并得到相同的空数据结果。如果我从我自己的管理员测试帐户进行测试,则 user_events 数据始终填充有数据。我尝试使用比下面的屏幕截图更少/没有参数的参数,所有这些都适用于测试用户但不适用于实际用户。

非常感谢您的帮助!

截图:

enter image description here

enter image description here

最佳答案

与另一个用户一起测试

我的应用程序处于开发模式。您还可以轻松创建和使用 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 数据。

"If your app is in dev mode you should be able to get page access tokens with any permission for anybody who has a role on your app. If you just want to manage posts on your own page or the pages of users who have roles on your app, you'll be able to do so in development mode without submitting for app review." - Response from Facebook Developer Support

您可能需要执行

还可以考虑 filing a bug并在此处包含链接

如何调试 Facebook Graphql

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

使用缺少 user_events 权限的 token 对 /users/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":[]}

您可以检索调试信息 passing the param debug=all in your /users/events request如下面的 curl 示例所示:

~ $ 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

第 2 步。生成 token

  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

关于Facebook Graph API -> 用户/事件返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55933436/

相关文章:

javascript - "Protocols, domains, and ports must match"问题

PHP : Serialization of a closure is not allowed

android - Facebook 权限审查问题和不同的 hashkey/google play 包名称

php - 使用 Facebook PHP SDK 4 但没有存储 session

php - 在 Facebook 上发帖,无需 PHP 分享提示

android - 我可以为 facebook WebDialog (Facebook Android SDK 3.5) 传递哪些参数

ruby-on-rails - 推特和 Facebook 使用什么语言?

facebook - 发送 Facebook 请求并获得礼物 FB API

Perl Facebook::Graph API v2.x

php - Facebook 应用程序成功发布到页面,但非开发人员看不到帖子。我真的必须审查只有 1 个用户的应用程序吗?