Facebook Graph API获取Page Ratings时无法获取reviewer字段问题
解决Facebook Graph API获取Page Ratings缺少reviewer字段的问题
嘿,我帮你排查了一下,核心问题出在API请求的参数格式上,另外还有几个细节需要调整,具体如下:
1. 修复URL参数的语法错误
你当前的API调用URL里有两个关键错误:
- 参数分隔符错误:
limit=10后面用了第二个?,但URL中只能有一个?用来分隔路径和参数,后续所有参数都必须用&连接 - 字段声明多了一个冗余的
}
错误的请求URL片段:
'/'+ page.id + '/ratings?access_token='+ page.access_token +'&limit=10?fields=reviewer{id,name,picture},rating}'
修正后的版本(用模板字符串更易读):
`/${page.id}/ratings?access_token=${page.access_token}&limit=10&fields=reviewer{id,name,picture},rating`
2. 更安全的参数传递方式(推荐)
直接拼接URL容易出现符号错误,建议使用FB.api的参数对象传递方式,SDK会自动处理参数编码和格式,还能更清晰地管理参数:
FB.api( `/${page.id}/ratings`, { access_token: page.access_token, limit: 10, fields: 'reviewer{id,name,picture},rating,created_time,review_text' }, function(response) { if (response.error) { console.error('API请求错误:', response.error); } else { console.log('获取到的评分数据:', response); } } );
3. 确认页面访问令牌的权限
虽然你已经拥有manage_pages权限,但建议验证一下通过/me/accounts获取的页面令牌是否包含pages_read_engagement权限(这是读取页面评分和评论的必要权限之一)。你可以在Graph Explorer中调用:
debug_token?input_token={你的页面访问令牌}&access_token={你的应用令牌}
查看返回的scopes列表,确保包含pages_read_engagement。如果缺失,需要重新授权并确认权限范围包含该权限。
4. 检查应用的权限设置
确保你的Facebook应用在开发者后台的应用审核部分,已经将pages_read_engagement权限添加到提交的权限列表中(即使是测试应用,也需要在角色中添加测试用户并授予对应权限)。
按照以上步骤调整后,应该就能正常获取到包含reviewer字段的完整评分数据了。
内容的提问来源于stack exchange,提问作者Noë VIRICEL
相关产品推荐
相关产品推荐

