新增使用者
您可以透過下列四種方式在 Firebase 專案中建立新使用者:
- 呼叫
createUserWithEmailAndPassword()
方法。 - 透過聯合識別資訊提供者首次登入使用者。 例如 Google 登入、Facebook 登入或 Apple
您也可以從「驗證」頁面建立以密碼驗證的新使用者 專區中的「使用者」頁面。
取得使用者的個人資料
如要取得使用者的個人資料資訊,請使用 User
的屬性。另有
有三種方法可以取得代表目前使用者的 User
物件:
authStateChanges
、idTokenChanges
和userChanges
串流: 事件監聽器會收到目前的User
;如果沒有使用者,則會接收null
已驗證:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
應用程式啟動時,使用者憑證 (如有) 會在 本機儲存空間已還原,你的聽眾 會在使用者狀態初始化時呼叫。因此,每次驗證 狀態變更時,系統會引發新事件,並遵循更新後的使用者狀態。
只要監聽驗證狀態,就能建構使用者介面 回應驗證狀態的這些變更
驗證傳回的
UserCredential
物件 (signIn
-) 方法:UserCredential
物件的user
屬性含有目前User
:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
FirebaseAuth
例項的currentUser
屬性:如果您確定 目前已登入使用者,您可以透過currentUser
存取User
資源:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
currentUser
可能是null
,原因如下:- 使用者未登入。
- Auth 物件尚未完成初始化。如果使用事件監聽器 追蹤使用者的登入狀態,就不需要處理這個情況。
取得使用者供應商專屬個人資料
如要取得從連結至某個
請使用 providerData
屬性。例如:
if (user != null) {
for (final providerProfile in user.providerData) {
// ID of the provider (google.com, apple.com, etc.)
final provider = providerProfile.providerId;
// UID specific to the provider
final uid = providerProfile.uid;
// Name, email address, and profile photo URL
final name = providerProfile.displayName;
final emailAddress = providerProfile.email;
final profilePhoto = providerProfile.photoURL;
}
}
更新使用者的個人資料
您可以更新使用者的基本個人資料,也就是使用者的顯示名稱
和個人資料相片網址—使用 update
方法。例如:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
設定使用者的電子郵件地址
您可以使用 updateEmail()
方法設定使用者的電子郵件地址。例如:
await user?.updateEmail("janeq@example.com");
向使用者傳送驗證電子郵件
您可以使用
sendEmailVerification()
方法。例如:
await user?.sendEmailVerification();
您可以在 Firebase 控制台的「Email Templates」頁面。 請參閱「電子郵件範本」: Firebase 說明中心。
您也可以藉由 繼續網址:重新重新導向 傳送驗證電子郵件給應用程式。
此外,您可以更新 驗證碼才能傳送電子郵件。例如:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
設定使用者密碼
您可以使用 updatePassword()
方法設定使用者的密碼。例如:
await user?.updatePassword(newPassword);
傳送重設密碼電子郵件
您可以透過 sendPasswordResetEmail()
將密碼重設電子郵件傳送給使用者
方法。例如:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
您可以在 Firebase 控制台的「Email Templates」頁面。 請參閱「電子郵件範本」: Firebase 說明中心。
您也可以藉由 繼續網址:重新重新導向 傳送密碼重設電子郵件給應用程式。
此外,您可以更新密碼重設電子郵件, 驗證碼才能傳送電子郵件。例如:
await FirebaseAuth.instance.setLanguageCode("fr");
您也可以透過 Firebase 控制台傳送密碼重設電子郵件。
刪除使用者
您可以使用 delete()
方法刪除使用者帳戶。例如:
await user?.delete();
您也可以前往 Firebase 控制台,位於「使用者」頁面。
重新驗證使用者
某些涉及安全性的動作,例如
刪除帳戶
設定主要電子郵件地址,以及
變更密碼:使用者必須
最近登入。如果您執行了上述任一動作,且使用者已登入
該動作在很久以前就失敗,並擲回包含程式碼的 FirebaseAuthException
requires-recent-login
。
在這種情況下,請取得新的登入憑證,重新驗證使用者
並將憑證傳遞至 reauthenticate
。例如:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
匯入使用者帳戶
您可以使用
Firebase CLI 的 auth:import
指令。例如:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14