传入FacebookAuthProvider.credential(access_token)后Firebase报错无法解析ID Token
修复方案
核心问题
你遇到的Cannot parse ID Token报错本质是Firebase在解析Facebook返回的身份信息时缺少必要字段,可按以下步骤逐一修复:
具体操作步骤
- 调整授权请求配置
你当前的授权请求没有配置权限范围,导致Facebook返回的令牌不包含Firebase要求的基础身份字段,修改useAuthRequest配置如下:const [ request, response, promptAsync] = Facebook.useAuthRequest({ responseType: ResponseType.Token, clientId: 'XXXXXXXXXXXXXXX', // 新增权限配置 scopes: ['public_profile', 'email'] }); - 修改凭证生成逻辑
不要通过你预先初始化的facebookProvider实例调用credential方法,直接调用FacebookAuthProvider的静态方法生成凭证:
替换原有代码行:
为:const credential = facebookProvider.credential(access_token);const credential = firebase.auth.FacebookAuthProvider.credential(access_token); - 检查后台配置
- 登录Firebase控制台,进入身份验证→登录方式→Facebook,确认填写的App ID、App Secret和Facebook开发者后台的配置完全一致,且Facebook登录功能处于启用状态
- 登录Facebook开发者后台,进入你的应用→Facebook登录→设置,确认「客户端OAuth登录」「Web OAuth登录」两个开关已开启
- 如果你的Facebook应用还处于开发模式,需要把你用来测试的Facebook账号添加为应用的测试人员,否则拿到的访问令牌会受权限限制导致解析失败
额外排查建议
如果修改后仍报错,可以在catch块里打印error.code和error.message的完整内容,根据具体错误码进一步定位问题。
内容的提问来源于stack exchange,提问作者Brett Plemons
相关产品推荐
相关产品推荐

