如何在 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:检查电子邮件是不是已在数据库中