使用Facebook Graph API获取评论插件数据异常:comment_count有值但data为空
我正尝试获取应用中运行的Facebook Comments Plugin的所有评论,但遇到了异常情况,具体操作和返回结果如下:
操作步骤与返回内容
- 首先调用接口
https://graph.facebook.com/{myUrl},返回结果:
{ "share": { "comment_count": 43, "share_count": 1695 }, "og_object": { "id": {myObjectID}, "description": {myDescription}, "title": {myTitle}, "type": "website", "updated_time": "2018-05-28T21:50:37+0000" }, "id": {myUrl} }
从结果中可以看到comment_count显示为43,说明系统统计到有43条评论。
- 接着调用评论查询接口
https://graph.facebook.com/{myObjectID}/comments?access_token={pageToken},返回结果:
{ "data": [ ], "paging": { "cursors": { "before": {beforePointer}, "after": {afterPointer} }, "next": {nextUrl} } }
这里出现了两个异常:
- 明明
comment_count为43,但data字段是空数组 - 无返回结果的情况下,依然返回了
nextUrl分页链接
我查阅了GDPR相关的近期更新,未找到相关说明,想请教有什么解决思路?
这种comment_count和实际返回评论数不匹配的情况,我之前也碰到过类似案例,大概率是以下几个原因导致的,你可以逐一排查:
隐私设置过滤:这是最常见的原因。Facebook用户可以将评论设置为仅好友可见,或者部分评论受平台默认隐私规则限制,Graph API默认仅返回公开可见的评论,那些受隐私保护的评论会被计入
comment_count,但不会出现在data数组中。你可以手动去对应的页面查看,实际显示的公开评论数量是否和接口返回的空结果匹配。Access Token权限不足:你使用的
pageToken需要确认是否具备完整的权限,比如pages_show_list、public_profile,如果涉及用户评论的深度获取,可能还需要user_posts权限。建议到Facebook开发者工具的Access Token Debugger中检查token的权限范围、有效期和有效性。评论被删除/隐藏:部分评论可能被页面管理员删除,或者被Facebook内容审核系统标记为违规隐藏,这类评论依然会被统计到
comment_count中,但不会被接口返回。分页链接的设计逻辑:那个
nextUrl其实是Graph API的特殊设计(或者说小bug)——当comment_count大于0但当前页没有可返回的公开评论时,API依然会生成分页链接,但调用后还是会返回空的data,你可以尝试调用一次验证,大概率还是无结果。
关于GDPR的影响,它主要约束用户数据的获取和存储合规性,公开评论只要符合合规要求是可以正常获取的,所以这应该不是直接原因。
建议你先从验证Access Token权限和检查页面公开评论数量入手排查,应该能找到问题所在。
内容的提问来源于stack exchange,提问作者Ricardo Amaral

