如何在 Firebase Auth 中检查用户是不是通过 Facebook 登录 [重复]

Posted

技术标签:

【中文标题】如何在 Firebase Auth 中检查用户是不是通过 Facebook 登录 [重复]【英文标题】:How to check if a user is logged in via Facebook in Firebase Auth [duplicate]如何在 Firebase Auth 中检查用户是否通过 Facebook 登录 [重复] 【发布时间】:2018-05-24 22:25:04 【问题描述】:

我正在尝试确定当前用户是否通过 Facebook 登录在应用程序中进行了身份验证。我想要这样,因为如果用户通过 facebook 进行身份验证,那么 signOut() 应该处理

        LoginManager.getInstance().logOut();

但如果是通过电子邮件进行身份验证,则比简单

auth.signOut();

我现在的代码是

//sign out method
public void signOut() 

    if(auth.getCurrentUser().getProviderId().equals("facebook.com")) 
        LoginManager.getInstance().logOut();
        auth.signOut();
    
    else 
        auth.signOut();
    

【问题讨论】:

【参考方案1】:

你可以这样做:

if (firebaseUser != null) 
    for (UserInfo userInfo : firebaseUser.getProviderData()) 
        if (userInfo.getProviderId().equals("facebook.com")) 
            Log.d("TAG", "User is signed in with Facebook");
        
    

【讨论】:

这里的问题是,如果用户使用电子邮件登录并且该帐户也链接到 Facebook,这将返回 true 但应该返回 false。如果我错了,请纠正我... @Swapnil 为什么说它应该返回false?请看看我在post 上的回答。 你不能调用 userInfo.getProviderId() 因为它只返回“firebase”值。 @NaPro 不正确! FirebaseUser 的getProviderId() 方法,将始终返回一个字符串,即PROVIDER_ID【参考方案2】:

希望对你有帮助:

for (UserInfo user:FirebaseAuth.getInstance().getCurrentUser().getProviderData()) 
  if (user.getProviderId().equals("facebook.com")) 
    System.out.println("User is signed in with Facebook");
   

【讨论】:

以上是关于如何在 Firebase Auth 中检查用户是不是通过 Facebook 登录 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是登录 Flutter & firebase auth |

如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?

Firebase Auth 和 Swift:检查电子邮件是不是已在数据库中

在 Flutter App 的 Firebase Auth 中检查电子邮件是不是已存在

如何检查用户是不是存在于 Firebase 中?

Laravel 和 jwt-auth。如何检查用户电子邮件是不是经过验证