RestFB 2.0.0调用Facebook API异常求助:权限审核问题
解决RestFB 2.0.0调用Facebook API时的OAuthException (#10)问题
问题根源拆解
你遇到的com.restfb.exception.FacebookOAuthException: (#10)错误,本质是Facebook的API权限规则变了:现在想要获取公共Facebook页面的动态(也就是你代码里调用的/feed接口),必须先申请并通过「Page Public Content Access」权限的审核。哪怕之前你的应用跑的好好的,现在未经过审核的应用都会被直接限制访问这个接口。
另外你说注释了用API的函数还报错?这大概率是你的代码里藏着其他调用Facebook API的地方——比如是不是有静态代码块、构造函数,或者某个Bean初始化时偷偷触发了请求?得先把这些隐藏调用找出来。
分步解决办法
1. 先揪出隐藏的API调用
先全局搜一遍你的项目代码:
- 找
fbClient.fetchObject、fbClient.fetchConnection这类RestFB的API调用,确认是不是除了你注释的函数外,还有其他地方在调用Facebook接口 - 检查
FacebookClient实例的初始化位置,有没有在初始化后立刻执行的请求(比如单例类的初始化逻辑) - 看看启动类、配置类里,是不是有相关Bean在初始化时触发了API调用
2. 处理权限审核(长期解决方案)
如果你的应用确实需要继续获取那个Facebook页面的动态,就得走Facebook的权限审核流程:
- 登录Facebook开发者后台,找到你的应用
- 进入「应用审核」板块,添加「Page Public Content Access」权限
- 按照要求提交审核材料:包括你的应用使用这个权限的场景说明、演示视频等,得证明你的应用是合规使用公共页面内容的
- 等审核通过后,你的应用就能重新正常调用
/feed接口了
3. 临时救急方案(让应用先启动起来)
如果审核需要时间,想先让应用能正常启动:
- 直接把
FacebookClient的初始化代码删掉,或者把相关逻辑改成开关控制(比如只在特定环境下才执行) - 要是只是测试应用其他功能,可以用Facebook的测试用户/测试页面,测试环境下的API调用不受审核限制
对你现有代码的小建议
你代码里调用page.getId() + "/feed"获取页面动态,这正好是需要「Page Public Content Access」权限的接口。等审核通过后,记得确认你的accessToken是拥有对应权限的页面令牌或者应用令牌(还要注意令牌的有效期,必要时刷新令牌)。
可以加一段代码验证令牌的权限:
// 验证当前令牌的权限 DebugTokenInfo debugInfo = fbClient.fetchObject("debug_token", DebugTokenInfo.class, Parameter.with("input_token", accessToken)); System.out.println("当前令牌拥有的权限:" + debugInfo.getScopes());
如果输出里没有page_public_content_access(或者Facebook最新命名的对应权限),说明你的令牌没拿到权限,得重新生成有权限的令牌。
内容的提问来源于stack exchange,提问作者Valek
相关产品推荐
相关产品推荐

