Flutter应用Firebase Auth集成Facebook登录遇Error Code 190求助
解决Firebase Auth Facebook登录错误码190(Bad signature)的方案
针对你遇到的{"code":190,"message":"Bad signature"}错误,以下是强制Firebase获取新Facebook访问令牌的具体操作:
1. 彻底清除本地旧令牌缓存
先通过代码完成双重登出,确保本地缓存的过期令牌被清空:
// 登出Facebook await FacebookAuth.instance.logOut(); // 登出Firebase await FirebaseAuth.instance.signOut();
完成后关闭并重启应用,再尝试重新发起登录流程。
2. 强制Facebook重新授权获取新令牌
调用Facebook登录时,指定authType: 'reauthenticate'参数,强制用户重新授权,确保生成全新的访问令牌:
final LoginResult result = await FacebookAuth.instance.login( permissions: ['email', 'public_profile'], authType: 'reauthenticate', // 强制重新授权 );
如果使用的是flutter_facebook_auth的其他登录方式,也需要确保触发重新授权的逻辑,避免复用旧令牌。
3. 手动触发Firebase令牌刷新
如果登录后仍存在令牌问题,可以手动强制Firebase刷新用户令牌:
final user = FirebaseAuth.instance.currentUser; if (user != null) { // 强制刷新令牌,参数true表示忽略缓存 final newIdToken = await user.getIdToken(true); // 可以输出令牌信息确认是否更新 print('新令牌: ${newIdToken.token}'); }
4. 检查Facebook应用配置细节
- 进入Facebook开发者控制台,确认应用的访问令牌有效期设置(路径:应用设置→高级→安全),避免设置过短的有效期;
- 验证应用的密钥哈希(Key Hash)是否与Firebase控制台中填写的完全一致,建议重新生成并同步两边的哈希值;
- 确认OAuth设置中的“有效OAuth重定向URI”包含Firebase提供的回调地址(可在Firebase控制台的Facebook认证配置页查看)。
额外注意事项
确保flutter_facebook_auth包版本与firebase_auth:5.1.1兼容,建议升级到最新稳定版,避免因版本不匹配导致的令牌处理异常。
内容的提问来源于stack exchange,提问作者Kevin Miller
相关产品推荐
相关产品推荐

