我正在使用 Firebase,對此我很陌生。我在 Firebase 中使用身份驗證功能并撰寫有關錯誤處理的代碼。我猜有兩種模式email-already-in-use
:
- 電子郵件已注冊,電子郵件身份驗證也已完成,用戶將發送相同的電子郵件地址,firebase 宣布上述錯誤。
- 電子郵件已注冊但身份驗證尚未完成,用戶將發送相同的電子郵件地址,firebase 宣布上述錯誤。
我想區分這些狀態,但FirebaseAuthException
總是email-already-in-use
有共同點,我該如何處理?
uj5u.com熱心網友回復:
您在問題下的評論:
我正在使用下面的方法 1.
auth.createUserWithEmailAndPassword()
// 用戶電子郵件和在 Firebase 中注冊的密碼 2.user.sendEmailVerification()
// Firebase 向用戶發送電子郵件以識別 3. 用戶打開電子郵件,最后整個身份驗證程序完成
在這種情況下,電子郵件身份驗證完成意味著上面的#3,不僅在 Firebase 中注冊,而且用戶打開了來自 Firebase 的電子郵件,并且該帳戶變為有效狀態。
從您的評論來看,您所說的“帳戶成為有效狀態”并不是 100% 清楚的。
當您createUserWithEmailAndPassword()
從前端呼叫該方法時,成功后,用戶將在 Firebase 身份驗證服務中創建(即已注冊)并自動登錄。
如果您嘗試使用 Firebase 身份驗證服務中已存在的電子郵件創建用戶,則用戶的電子郵件是否經過驗證(使用user.sendEmailVerification()
)這一事實不會影響 的行為。createUserWithEmailAndPassword()
換句話說,無論電子郵件是否經過驗證,該createUserWithEmailAndPassword()
方法都會阻止您使用相同的電子郵件創建另一個用戶并回傳email-already-in-use
錯誤。
如果您希望對于給定的電子郵件,如果之前使用此電子郵件創建的用戶尚未驗證他/她的電子郵件,則能夠使用相同的電子郵件創建新用戶,您必須構建自己的驗證系統并創建Firebase 身份驗證用戶(即帳戶)自己,例如在后端使用Admin SDK 。
更新以下您的評論:
這種創建用戶帳戶和驗證用戶電子郵件的程序在 Firebase 身份驗證中很常見嗎?
是的,在允許用戶與 Firebase 后端(資料庫或云存盤)互動之前驗證電子郵件很常見。
您不僅可以在前端驗證電子郵件是否經過驗證(使用emailVerified
屬性),而且更重要的是,您可以在安全規則中檢查此屬性(即在后端)。
檔案中的更多詳細資訊,并在下面查看檢查用戶電子郵件是否經過驗證的安全規則功能示例:
function isUserEmailVerified() {
return request.auth.uid != null && request.auth.token.email_verified == true;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512569.html
標籤:Google Cloud Collective 扑火力基地firebase 身份验证
下一篇:盡管呼叫了“initializeApp()”,但“沒有創建任何Firebase應用程式‘[DEFAULT]’”(Flutter,Firebase)