3

如何检查我的用户是否已加入我的应用使用哪个Auth Provider?我想检测我的用户是否使用Facebook身份验证提供程序或使用电子邮件提供程序或使用Google身份验证提供程序登录到我的应用程序。我已经在Firebase Docs中搜索了这个,但我找不到任何正确的答案,检测Firebase用户身份验证提供程序

回答

2

在firebase中,单个用户可以使用多个提供者登录。当你拨打电话:

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"); 
    } 
} 

希望有所帮助。

+0

如果答案是有用的,那就接受它,这样对别人也有帮助。 –

+0

什么是UserInfo在这里?为什么我们要循环做这件事? –

+0

UserInfo是一个INTERFACE。 这仅适用于Firebase项目的应用程序。我们在循环中执行此操作,因为我们在Firebase中有多个提供程序。我们正在循环所有,并检查它是Facebook。 –

0

您可以随时检查Malik指出的提供商列表。但是,由于您可以将多个提供程序链接到同一用户,因此要获取具有多个提供程序的当前用户的登录方法,您必须检查该标识令牌。您需要在令牌中检查firebase.sign_in_provider索赔。这会为您提供用于获取ID令牌的登录方法。为了在客户端获得它,你需要getIdToken,然后用一些JWT解析器解析返回的JWT。

相关问题