Facebook API调用me/accounts获取Page访问令牌时scope缩减问题
问题成因
- 细粒度页面授权遗漏:Facebook Graph API v9.0及以上版本对页面类权限采用细粒度授权机制,你在 OAuth 流程中申请
pages_messaging、pages_manage_metadata这类页面级权限时,授权弹窗会要求你选择允许应用访问的页面列表。从你给出的granular_scopes参数可以看到,这类权限的target_ids仅包含ID为2053841064733的页面,你当前需要获取令牌的目标页面(ID1023865413)未被勾选纳入授权范围,因此生成对应页面的访问令牌时,这部分未授权的权限会被自动剔除。 - 授权会话未更新:如果你是在完成用户令牌授权之后才将目标页面添加到你的Facebook账号管理列表中,旧的授权会话不会自动同步新页面的权限,也会导致对应页面的权限缺失。
- 补充排除项:你使用的用户令牌本身已经包含所需的权限范围,说明应用已经通过了Facebook的权限审核,不存在应用层面的权限限制问题。
解决方案
- 重新走完整的OAuth授权流程,再次申请所需的全部页面级权限,当授权弹窗出现页面选择步骤时,务必勾选你需要用到的所有目标页面,包括本次有问题的ID为
1023865413的页面。 - 用新生成的用户令牌调用
https://graph.facebook.com/me/accounts接口获取页面访问令牌,校验新的页面令牌参数,对应权限的granular_scopes.target_ids中会出现目标页面ID,权限范围就会恢复正常。
内容的提问来源于stack exchange,提问作者caliph
相关产品推荐
相关产品推荐

