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

Facebook login using Firebase results in Invalid OAuth access token error

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

I/flutter (30934): [firebase_auth/invalid-credential] The supplied auth credential is malformed or has expired. [ Unsuccessful debug_token response from Facebook: {"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 帐户正确登录到该应用程序。我已经尝试过以下解决方案:

  1. 确保 FB 开发者控制台、firebase FB 授权页面和应用内的 App ID 和 App Secret 都匹配。
  2. 在 FB 开发者控制台中,转到设置 -> 高级并设置“客户端是否嵌入了 App Secret?”设置为“否”。
  3. 删除 FB 应用程序并重新制作。

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

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

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

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