Flutter iOS端Facebook登录后Firebase认证报invalid-credential错误求助
iOS端Facebook-Firebase认证invalid-credential问题排查方案
以下是针对你遇到的iOS端可完成Facebook登录,但Firebase调用signInWithCredential报invalid-credential(Bad access token)问题的排查和修复步骤:
1. 核对Facebook开发者后台iOS平台配置
- 确保Bundle ID与iOS项目的
Bundle Identifier完全一致(大小写敏感,不能有任何拼写错误) - 检查是否已在Facebook后台添加iOS平台,并生成/配置正确的iOS密钥(路径:Facebook开发者后台 > 应用 > 设置 > 基本 > 添加平台 > iOS)
- 开启单点登录功能(路径:Facebook开发者后台 > 产品 > Facebook登录 > 设置 > iOS > 单点登录 设为“开启”)
2. 验证Firebase后台的Facebook认证配置
- 确认Firebase控制台中Facebook认证模块的应用ID和应用密钥,与Facebook后台的对应值完全匹配
- 检查Firebase的Facebook认证设置中,是否已添加iOS项目的
Bundle Identifier(即使Android正常,iOS可能未单独配置)
3. 修正Info.plist配置细节
- 在
LSApplicationQueriesSchemes数组中添加fb{你的APP ID}(当前仅包含fbauth2,缺少这个会影响令牌验证),修改后示例:<key>LSApplicationQueriesSchemes</key> <array> <!-- 其他原有scheme --> <string>fbauth2</string> <string>fb{你的APP ID}</string> </array> - 确认
CFBundleURLSchemes中的fb{你的APP ID}无拼写错误、多余空格或特殊字符 - 添加
FacebookAutoLogAppEventsEnabled键并设为true(部分场景下会影响令牌有效性):<key>FacebookAutoLogAppEventsEnabled</key> <true/>
4. 检查访问令牌的有效性与权限
- 确保Facebook登录请求的权限包含
public_profile和email(Firebase认证依赖这些基础权限),示例代码:final LoginResult result = await FacebookAuth.instance.login( permissions: ['public_profile', 'email'], ); - 打印并验证获取的访问令牌信息,确认
applicationId与你的Facebook App ID一致:final accessToken = await FacebookAuth.instance.accessToken; if (accessToken != null) { print('Token App ID: ${accessToken.applicationId}'); print('Token Expires: ${accessToken.expires}'); }
5. 清理缓存并重新构建
- 删除iOS项目的Derived Data(Xcode > 菜单栏 > Product > Clean Build Folder)
- 执行
pod deintegrate && pod install清理并重新安装Pod依赖 - 卸载设备上的应用后重新运行
内容的提问来源于stack exchange,提问作者buttonsrtoys
相关产品推荐
相关产品推荐

