簡體   English   中英

firebase 谷歌提供商登錄覆蓋其他登錄提供商的理想解決方案

[英]Ideal solution for firebase google provider login overriding other sign-in providers

我一直在玩 firebase 多提供商登錄。 我啟用了 email 和谷歌。

我在某處讀到,如果 email 尚未經過驗證並且用戶嘗試使用谷歌登錄,那么即使使用相同的用戶 ID,用戶帳戶也會被覆蓋。

原因是 gmail 是受信任的提供商,Firebase 取消了之前未驗證的 email 的鏈接,並用谷歌用戶數據覆蓋了數據。

根據我從這條評論中讀到的內容,這是 Firebase 的安全功能和預期行為。

我的問題是,如果用戶一直使用 email 和密碼使用他的帳戶,突然間如果用戶使用 gmail 登錄,那么他將不再能夠使用 email 和密碼登錄,我該如何處理這種情況。

是的,用戶可以簡單地使用 google login 登錄,並且仍然是同一個用戶帳戶,只是被 google 覆蓋了,但一些用戶可能認為這是一個錯誤,而不是良好的用戶體驗。

我有同樣的問題,我有一個可能適合你的解決方案。

我在 Kotlin 中編寫的 Android 應用程序使用 Firebase 身份驗證。我不確定您使用的是什么平台和語言,但如果您能夠傳輸邏輯,該解決方案也應該適用於您。

對於 android,您使用GoogleSignIn.getSignedInAccountFromIntent(data)來驗證 Google 帳戶。 這里的dataIntent類型的 object,它包含身份驗證所需的所有必需數據。

我能夠從data中獲取用戶 email,如果之前使用相同的 email 登錄該應用程序,我將拒絕登錄並顯示相應的消息。

以下是我用來獲取用戶 email 的代碼行。

val googleUser: GoogleSignInAccount = data!!.getParcelableExtra("googleSignInAccount")!!

我希望這能為您指明正確的方向,如果解決方案不是您正在尋找的語言,我們深表歉意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM