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。

相關問題