You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:08:31