调用Facebook Graph API获取用户链接时提示Invalid scope错误如何解决
错误原因
user_link属于Facebook Graph API的高级权限,默认未开放给应用使用,未在开发者后台完成权限配置/审核的情况下直接请求该权限,就会触发Invalid scope报错- 若应用处于开发模式,只有被添加到应用角色列表中的开发者、测试员账号可以请求未审核的高级权限,普通用户账号即使在测试阶段请求该权限也会报错
- 若Facebook SDK版本与应用后台配置的Graph API主版本不兼容,也可能出现权限识别异常的问题
解决步骤
- 开发测试阶段配置:进入Facebook开发者后台对应应用的「应用角色」页面,将你测试用的Facebook账号添加为「开发者」或「测试员」,确保测试账号有权限申请未审核的高级权限
- 权限配置:进入「应用审查」→「权限和功能」页面,搜索
user_link权限,添加到应用的权限列表中。如果仅用于本地测试,开启「标准访问」即可直接使用无需提交审核;如果要上线面向所有用户,需要按照页面提示提交权限使用场景说明、功能录屏等材料,等待Facebook官方审核通过后才可使用 - 代码校验优化:可以在登录成功回调中增加权限校验逻辑,避免未授权情况下发起Graph请求:
override fun onSuccess(loginResult: LoginResult) { // 增加权限校验 if (!loginResult.accessToken.permissions.contains("user_link")) { MLogger.d(tag, "未获取到user_link权限,无法获取用户主页链接") return } // 原有Graph请求逻辑不变 val request = GraphRequest.newMeRequest(loginResult.accessToken) { obj, response -> // 原有业务逻辑保持不变 } val parameters = Bundle() parameters.putString("fields","id,name,link") request.parameters = parameters request.executeAsync() }
- 版本适配校验:确认你集成的Facebook Android SDK版本与开发者后台「设置」→「高级」页面中配置的Graph API主版本兼容,建议升级SDK到最新稳定版本规避版本适配问题
内容的提问来源于stack exchange,提问作者Devrath
相关产品推荐
相关产品推荐

