Facebook API与PHP调用异常:单个客户端遇OAuth访问令牌错误求助
针对Facebook API OAuth错误的解决方案
我之前帮同事排查过一模一样的问题,给你几个实用的排查和解决方向:
先确认Access Token的有效性与权限
你可以用Facebook开发者平台里的Access Token调试工具,检查你用的XXXX令牌:- 看看token是不是已经过期了,如果过期必须重新获取;
- 确认这个token有没有
manage_pages权限——调用me/accounts接口必须要有这个权限,才能拉取用户管理的页面数据; - 检查该token对应的用户,是否真的拥有目标页面的管理权限,说不定这个客户端的用户已经被移除了页面权限,导致token拿不到数据。
核对Access Token的类型
调用me/accounts必须用用户访问令牌(User Access Token),不能用页面令牌或者应用令牌。另外如果你的应用有受众限制(比如特定地区、年龄),要确认这个客户端的用户符合访问条件。重新生成有效的Access Token
有时候就算token没过期,用户在其他设备登出Facebook或者修改了密码,都会导致token失效。你可以引导这个客户端的用户重新授权你的应用:- 跳转到Facebook授权页,明确请求
manage_pages权限; - 拿到新的授权码后,用你的应用ID和密钥换取新的access token;
- 用新token调用接口测试,应该就能解决问题。
- 跳转到Facebook授权页,明确请求
检查请求URL的格式
你当前的请求URL里,accounts {access_token,link}有个空格,虽然大部分情况不影响,但偶尔会因为URL编码问题导致字段解析错误。建议改成无空格的格式:https://graph.facebook.com/me?fields=accounts{access_token,link}&access_token=XXXX重置用户的Facebook会话
你试过删Cookie但没用,可以让这个用户完全登出Facebook所有设备,然后重新登录你的应用再授权,确保会话是全新的,避免残留的无效会话干扰。
内容的提问来源于stack exchange,提问作者John Rand
相关产品推荐
相关产品推荐

