首先说明一下情况:
- 我的应用已通过
user_events
的 App Review 批准(下面的屏幕截图) - 我正在使用真实用户帐户对生产应用程序进行测试(使用管理员用户进行测试会返回误报)
- 调用
{user_id}/
有效并返回基本配置文件。 - 调用
{user_id}/permissions
有效并返回权限(incuser_events
,下面的屏幕截图) - 调用
{user_id}/events
始终“有效”但返回空数组。
我尝试使用“我”而不是登录的 fb_user_id 进行测试,并得到相同的空数据结果。如果我从我自己的管理员测试帐户进行测试,则 user_events 数据始终填充有数据。我尝试使用比下面的屏幕截图更少/没有参数的参数,所有这些都适用于测试用户但不适用于实际用户。
非常感谢您的帮助!
截图:
最佳答案
与另一个用户一起测试
我的应用程序处于开发模式。您还可以轻松创建和使用 testing users, customize them to your needs and log in to the account ,或者您可以将真实的 Facebook 用户添加到您的帐户并为其分配测试员角色。
我用 Ellison Clinton 登录并创建一个事件
我可以通过 api 检索 /events
然后我将 facebook 应用程序切换到生产环境并从测试角色中删除用户
我可以检索用户信息
但我无法检索之前创建的事件
完成授权过程
也许您没有完成 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
的请求将返回状态 200
和 data: []
,响应中没有错误信息。
我在 Graphql Facebook Explorer 上测试了这个场景并且请求不会返回错误消息。 Api explorer
中显示调试消息,但未明确包含在响应中。
我将此请求导出为 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
第 2 步。生成 token
get token -> get user access token
并添加user_events
权限
第 3 步。运行查询
使用端点 /me?fields=id,name
检索您的用户 ID,然后:
- 获取
/{user-id}
- 获取
/{user-id}/permission
- 获取
/{user-id/events
如下图所示,/events
返回data: []
,而/permissions
端点包含user_events
权限。
我的 Facebook 用户以后没有参加任何事件。创建事件并重复测试返回了一些结果。
下面的图片展示了我的测试用例
关于Facebook Graph API -> 用户/事件返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55933436/