使用 Firebase 登录 Facebook 导致无效 OAuth 访问令牌错误

Posted

技术标签:

【中文标题】使用 Firebase 登录 Facebook 导致无效 OAuth 访问令牌错误【英文标题】:Facebook login using Firebase results in Invalid OAuth access token error 【发布时间】:2021-03-20 17:01:03 【问题描述】:

我的 Flutter 项目正在尝试通过 Facebook 登录向 Firebase Auth 添加新用户,但失败并出现错误:

I/flutter (30934):[firebase_auth/invalid-credential] 提供的身份验证凭据格式错误或已过期。 [来自 Facebook 的 debug_token 响应不成功:"error":"message":"Invalid OAuth access token.","type":"OAuthException","code":190,"fbtrace_id":"MY_TRACE_ID" ]

我正在使用这个包

flutter_facebook_login: ^3.0.0
firebase_auth: ^0.18.3+1

并通过以下方式登录

FacebookLoginResult result = await FacebookLogin().logIn(['email']);
final auth.AuthCredential credential = auth.FacebookAuthProvider.credential(result.accessToken.token);
try 
  await auth.FirebaseAuth.instance.signInWithCredential(credential);
 catch (e)
  print(e);

try中的行失败,上面的错误是从catch中打印出来的。

Facebook 登录工作正常,我可以看到我已从我的 FB 帐户正确登录到该应用程序。我已经尝试了以下解决方案:

    确保 FB 开发者控制台、firebase FB 身份验证页面以及应用内的 App ID 和 App Secret 都匹配。 在 FB 开发人员控制台中转到设置 -> 高级并设置“应用程序密钥是否嵌入在客户端中?”设置为“否”。 已删除 FB 应用并重新制作。

【问题讨论】:

那么credential实际上包含什么,你检查了吗? 包含:providerId: facebook.com, signInMethod: facebook.com, idToken: null, accessToken: ACCESS_TOKEN, secret: null, rawNonce: null 【参考方案1】:

问题解决了!问题在于如何在 Facebook 开发者控制台上设置应用程序。首次创建应用程序时,您会看到以下菜单

我最初选择了“构建或连接到游戏”,因为它说它用于连接到在 Facebook 平台上或之外玩的游戏应用程序,这最能描述我的应用程序。我在 FB 上重新设置了应用程序,但现在选择了“建立互联体验”,现在它可以工作了。不知道为什么。

【讨论】:

【参考方案2】:

如果您在指定类别中使用React to do your authentication,则图片中显示的选项对我有用。

你也可以这样做。这是来自Facebook的应用类型选择UI的更新版本dated 5th January, 2022

【讨论】:

以上是关于使用 Firebase 登录 Facebook 导致无效 OAuth 访问令牌错误的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 Firebase 用户是不是使用 facebook 身份验证登录

如何确定 Firebase 用户是不是使用 facebook 身份验证登录

我可以使用啥密钥来验证 Facebook 登录生成的 Firebase 身份验证令牌

使用 Firebase 登录 Facebook 导致无效 OAuth 访问令牌错误

Android - 基于 facebook 的 Firebase 登录并调用 Facebook Graph Api 问题

Facebook 在 React Native 中使用 Firebase 登录错误 400