如何使用Facebook身份验证确定Firebase用户是否已登录

您所在的位置:网站首页 什么是firebase 如何使用Facebook身份验证确定Firebase用户是否已登录

如何使用Facebook身份验证确定Firebase用户是否已登录

2023-03-13 12:28| 来源: 网络整理| 查看: 265

我正在使用谷歌的firebase,我在用户身份验证方面遇到了一些麻烦.使用Facebook登录后,我在AuthStateListener中获取FirebaseUser,但是如何通过facebook或不同方式检测此用户是否已记录?

更新正如@Frank van Puffelen所说,FirebaseAuth.getInstance().getCurrentUser().getProviderId()应该返回"facebook",但在我的情况下它会返回"firebase".现在我无法弄清楚这种行为的原因是什么.当我收到FacebookToken时,我会这样做:

AuthCredential credential = FacebookAuthProvider.getCredential(facebookToken.getToken()); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { // If sign in fails, display a message to the user. If sign in succeeds // the auth state listener will be notified and logic to handle the // signed in user can be handled in the listener. if (!task.isSuccessful()) { } } });

然后在调用onComplete()方法之前,我的AuthStateListener获取用户哪个提供者ID不应该是"facebook".难道我做错了什么?我按照官方谷歌文档

1> Frank van Pu..:

在3.x及更高版本中,单个用户可以使用多个提供程序登录.因此,不再存在单个提供者ID的概念.事实上,当你打电话:

FirebaseAuth.getInstance().getCurrentUser().getProviderId()

它总会回来firebase.

要检测用户是否使用Facebook登录,您必须检查提供者数据:

for (UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()) { if (user.getProviderId().equals("facebook.com")) { System.out.println("User is signed in with Facebook"); } } 您的更新中的代码正是我的答案的前半部分所解释的.你在我的第二个代码片段中使用了我的循环吗?第一个`UserInfo`确实有提供者id`firebase`(就像合并用户一样).但我测试中的第二个是"google.com"(我使用的是Google提供商).


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3