如何使用Facebook身份验证确定Firebase用户是否已登录 |
您所在的位置:网站首页 › 什么是firebase › 如何使用Facebook身份验证确定Firebase用户是否已登录 |
我正在使用谷歌的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 |