Firebase集成Facebook登录:Token认证失败问题排查
解决Firebase Facebook登录错误:FIRAuthErrorDomain Code 17999(Facebook OAuthException #100)
从你提供的错误详情来看,核心问题是Firebase在验证Facebook令牌时,收到了Facebook返回的#100 OAuth错误——提示需要应用访问令牌或应用所有者/开发者的用户令牌。下面是针对性的解决方案:
1. 确保测试账号拥有Facebook应用权限
Facebook应用处于开发模式时,默认只允许管理员、开发者、测试员账号进行登录验证。如果你的测试账号不在这个列表里,就会触发这个权限错误:
- 登录Facebook开发者后台,进入你的应用 → 「角色」标签页 → 「测试员」,添加你的测试Facebook账号;
- 用添加后的账号重新登录测试。
2. 重新核对Firebase与Facebook的密钥配置
即使你已经检查过,也建议再仔细核对一遍,拼写错误或空格很容易导致验证失败:
- 在Facebook开发者后台,进入「设置」→「基本」,复制应用ID和应用密钥;
- 打开Firebase控制台,进入项目 →「Authentication」→「登录方法」→「Facebook」,确保这里填写的应用ID、应用密钥和Facebook后台完全一致;
- 确认Facebook后台「设置」→「高级」里的「应用机密」没有泄露,且Firebase中填写的是完整正确的密钥。
3. 验证Facebook Access Token的有效性
你可以手动检查当前获取的令牌是否关联到正确的应用:
- 在Facebook开发者后台搜索「Debug Token」工具,输入
FBSDKAccessToken.current().tokenString; - 查看工具返回的结果,确认令牌所属的应用ID和你配置的一致,且令牌状态为有效;
- 如果令牌对应应用错误,检查iOS项目
Info.plist中的配置:确保FacebookAppID、FacebookDisplayName正确,CFBundleURLSchemes包含fb<你的应用ID>(比如fb123456789)。
4. 代码层面的小优化(可选但推荐)
在创建Firebase凭证前,先校验Facebook令牌是否存在,避免无效令牌导致的错误:
guard let fbAccessToken = FBSDKAccessToken.current() else { print("未获取到有效的Facebook访问令牌") return } let credential = FacebookAuthProvider.credential(withAccessToken: fbAccessToken.tokenString) Auth.auth().signIn(with: credential) { (user, error) in // 后续处理逻辑 }
5. 清理缓存后重新测试
有时候旧的令牌缓存会干扰验证:
- 卸载iOS应用,若使用模拟器则重置模拟器内容;
- 重新编译安装应用,再进行登录测试。
内容的提问来源于stack exchange,提问作者AnthonyR
相关产品推荐
相关产品推荐

