สร้างผู้ใช้
คุณสามารถสร้างผู้ใช้ใหม่ในโครงการ Firebase คุณในสี่วิธี:
- โทร
createUserWithEmailAndPassword()
วิธีการ - เข้าสู่ระบบของผู้ใช้เป็นครั้งแรกโดยใช้ ผู้ให้บริการเอกลักษณ์แบบ federated เช่น Google เข้าสู่ระบบ, Facebook เข้าสู่ระบบหรือแอปเปิ้ล
นอกจากนี้คุณยังสามารถสร้างผู้ใช้รหัสผ่านรับรองความถูกต้องใหม่จากส่วนรับรองความถูกต้องของ Firebase คอนโซล บนหน้าผู้ใช้
ได้รับรายละเอียดของผู้ใช้
เพื่อให้ได้ข้อมูลรายละเอียดของผู้ใช้ให้ใช้คุณสมบัติของ 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);
currentUser
ทรัพย์สินของFirebaseAuth
เช่น: ถ้าคุณแน่ใจว่าผู้ใช้ในขณะนี้มีการลงนามในคุณสามารถเข้าถึงUser
จากcurrentUser
ทรัพย์สิน:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
currentUser
สามารถnull
เหตุผลสองประการคือ- ผู้ใช้ไม่ได้ลงนามใน
- วัตถุรับรองความถูกต้องยังไม่ได้ดำเนินการเสร็จสิ้นการเริ่มต้น ถ้าคุณใช้ฟังเพื่อติดตามของผู้ใช้เข้าสู่ระบบในสถานะที่คุณไม่จำเป็นที่จะจัดการกับกรณีนี้
ได้รับข้อมูลรายละเอียดของผู้ให้บริการที่เฉพาะเจาะจงของผู้ใช้
เพื่อให้ได้ข้อมูลรายละเอียดที่ได้รับจากการเข้าสู่ระบบในผู้ให้บริการที่เชื่อมโยงกับผู้ใช้ให้ใช้ 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;
}
}
อัปเดตโปรไฟล์ของผู้ใช้
คุณสามารถอัปเดตของผู้ใช้ข้อมูลรายละเอียดขั้นพื้นฐานของผู้ใช้ชื่อที่แสดงและรูปโปรไฟล์ของ URL กับ การ 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 คอนโซล บนอีเมลหน้าแม่แบบ ดู แม่แบบอีเมล์ ในศูนย์ช่วยเหลือ Firebase
นอกจากนี้ยังเป็นไปได้ที่จะผ่านรัฐผ่านทาง ยังคง URL ที่จะเปลี่ยนเส้นทางกลับไปยังแอปเมื่อมีการส่งอีเมลยืนยัน
นอกจากนี้คุณสามารถ จำกัด วงอีเมลยืนยันโดยการอัปเดตโค้ดภาษาบนอินสแตนซ์รับรองความถูกต้องก่อนที่จะส่งอีเมล ตัวอย่างเช่น:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
ตั้งค่ารหัสผ่านของผู้ใช้
คุณสามารถตั้งค่ารหัสผ่านของผู้ใช้กับ updatePassword()
วิธีการ ตัวอย่างเช่น:
await user?.updatePassword(newPassword);
ส่งอีเมลรีเซ็ตรหัสผ่าน
คุณสามารถส่งอีเมลรีเซ็ตรหัสผ่านให้กับผู้ใช้ที่มี sendPasswordResetEmail()
วิธีการ ตัวอย่างเช่น:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
คุณสามารถปรับแต่งแม่แบบอีเมลที่ถูกนำมาใช้ในส่วนการตรวจสอบสิทธิ์ของ Firebase คอนโซล บนอีเมลหน้าแม่แบบ ดู แม่แบบอีเมล์ ในศูนย์ช่วยเหลือ Firebase
นอกจากนี้ยังเป็นไปได้ที่จะผ่านรัฐผ่านทาง ยังคง URL ที่จะเปลี่ยนเส้นทางกลับไปยังแอปเมื่อมีการส่งอีเมลรีเซ็ตรหัสผ่าน
นอกจากนี้คุณสามารถ จำกัด วงอีเมลรีเซ็ตรหัสผ่านโดยการปรับปรุงรหัสภาษาบนอินสแตนซ์รับรองความถูกต้องก่อนที่จะส่งอีเมล ตัวอย่างเช่น:
await FirebaseAuth.instance.setLanguageCode("fr");
นอกจากนี้คุณยังสามารถส่งอีเมลรีเซ็ตรหัสผ่านจากคอนโซล Firebase
ลบผู้ใช้
คุณสามารถลบบัญชีผู้ใช้ที่มี การ delete()
วิธีการ ตัวอย่างเช่น:
await user?.delete();
คุณสามารถใช้ยังลบจากส่วนรับรองความถูกต้องของ Firebase คอนโซล บนหน้าผู้ใช้
Re-รับรองความถูกต้องของผู้ใช้
บางคนที่มีความสำคัญการรักษาความปลอดภัยการกระทำเช่น การลบบัญชี , การตั้งค่าที่อยู่อีเมลหลัก และ เปลี่ยนรหัสผ่าน -require ว่าผู้ใช้มีการลงนามในเร็ว ๆ นี้. ถ้าคุณดำเนินการอย่างใดอย่างหนึ่งของการกระทำเหล่านี้และผู้ใช้ที่ลงนามในนานเกินไปที่ผ่านมา การดำเนินการล้มเหลวและพ่น FirebaseAuthException
มีรหัส requires-recent-login
เมื่อเกิดเหตุการณ์นี้ reauthenticate ผู้ใช้โดยการลงชื่อเข้าใช้ใหม่ข้อมูลประจำตัวจากผู้ใช้และผ่านข้อมูลประจำตัวที่ reauthenticate
ตัวอย่างเช่น:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
บัญชีผู้ใช้นำเข้า
คุณสามารถนำเข้าบัญชีผู้ใช้จากไฟล์ในโครงการ Firebase ของคุณโดยใช้ Firebase CLI ของ auth:import
คำสั่ง ตัวอย่างเช่น:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14