使用 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 问题