1
我試圖啓用「多個帳戶每個電子郵件地址」,但我不確定它是如何工作的。 fetchProvidersForEmail()似乎返回意外的結果。Firebase身份驗證Android fetchProvidersForEmail()錯誤?
我有以下代碼。
firebaseAuth.fetchProvidersForEmail("email").addOnCompleteListener(new OnCompleteListener<ProviderQueryResult>() {
@Override
public void onComplete(@NonNull Task<ProviderQueryResult> task) {
if (task.isSuccessful()) {
List<String> providers = task.getResult().getProviders();
if (providers != null) {
Timber.d(providers.toString());
} else {
Timber.d("provider null");
}
} else {
Timber.d("task fail");
}
}
});
方案1
- 默認情況下,在與谷歌的用戶。
fetchProvidersForEmail()
返回[google.com]
。 - 啓用「每個電子郵件地址有多個帳戶」。
fetchProvidersForEmail()
返回[]
。 - 禁用「每個電子郵件地址有多個帳戶」。
fetchProvidersForEmail()
再次返回[google.com]
。
方案2
- 啓用 「每個電子郵件地址多個帳戶」。首先使用電子郵件/密碼登錄用戶。
fetchProvidersForEmail()
返回[password]
。- 使用Google登錄用戶。
fetchProvidersForEmail()
仍然只返回[password]
。 - 禁用「每個電子郵件地址有多個帳戶」。
fetchProvidersForEmail()
現在只返回[google.com]
。
結論
- 當 「每個電子郵件地址多個帳戶」 未啓用,
[google.com]
正確返回。當「啓用多個帳戶每個電子郵件地址」時,還會優先創建電子郵件/密碼。 - 當啓用「每個電子郵件地址的多個帳戶」時,
[password]
已正確返回。永遠不會返回[google.com]
。
這實際上是正確的行爲嗎?