คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อสร้างและใช้บัญชีที่ไม่ระบุตัวตนชั่วคราวเพื่อตรวจสอบสิทธิ์กับ Firebase สามารถใช้บัญชีที่ไม่ระบุตัวตนชั่วคราวเหล่านี้เพื่ออนุญาตให้ผู้ใช้ที่ยังไม่ได้ลงชื่อสมัครใช้แอปของคุณสามารถทำงานกับข้อมูลที่ได้รับการปกป้องโดยกฎความปลอดภัย หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจสมัครใช้งานแอปของคุณ คุณสามารถ เชื่อมโยงข้อมูลรับรองการลงชื่อเข้าใช้ของพวกเขา กับบัญชีที่ไม่ระบุชื่อได้ เพื่อให้พวกเขาสามารถทำงานกับข้อมูลที่ได้รับการป้องกันต่อไปในเซสชันอนาคต
ก่อนที่คุณจะเริ่มต้น
หากคุณยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนในคู่มือ เริ่มต้น ใช้งาน
เปิดใช้งานการลงชื่อเข้าใช้แบบไม่ระบุตัวตน:
- ในส่วนการ รับรองความถูกต้อง ของคอนโซล Firebase ให้เปิดหน้า วิธีการลงชื่อเข้าใช้
- จากหน้า วิธีการลงชื่อเข้า ใช้ ให้เปิดใช้งานวิธีการ ลงชื่อเข้าใช้แบบไม่ระบุตัวตน แล้วคลิก บันทึก
รับรองความถูกต้องด้วย Firebase โดยไม่ระบุตัวตน
เมื่อผู้ใช้ที่ออกจากระบบใช้คุณลักษณะของแอปที่ต้องมีการพิสูจน์ตัวตนกับ Firebase ให้ลงชื่อเข้าใช้โดยไม่ระบุตัวตนโดยเรียก signInAnonymously()
:
try {
final userCredential =
await FirebaseAuth.instance.signInAnonymously();
print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
switch (e.code) {
case "operation-not-allowed":
print("Anonymous auth hasn't been enabled for this project.");
break;
default:
print("Unknown error.");
}
}
แปลงบัญชีนิรนามเป็นบัญชีถาวร
เมื่อผู้ใช้ที่ไม่ระบุตัวตนลงชื่อสมัครใช้แอปของคุณ คุณอาจต้องการอนุญาตให้พวกเขาทำงานต่อไปด้วยบัญชีใหม่ ตัวอย่างเช่น คุณอาจต้องการทำให้สินค้าที่ผู้ใช้เพิ่มลงในรถเข็นช็อปปิ้งก่อนที่จะลงชื่อสมัครใช้ในแอปใหม่ ตะกร้าสินค้าของบัญชี โดยทำตามขั้นตอนต่อไปนี้:
เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ดำเนินการขั้นตอนการลงชื่อเข้าใช้สำหรับผู้ให้บริการตรวจสอบสิทธิ์ของผู้ใช้สูงสุด แต่ไม่รวม เรียกหนึ่งใน
signInWith
- เมธอด ตัวอย่างเช่น รับโทเค็น Google ID ของผู้ใช้ โทเค็นการเข้าถึง Facebook หรือที่อยู่อีเมลและรหัสผ่านรับวัตถุ
Credential
สำหรับผู้ให้บริการการรับรองความถูกต้องใหม่:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
ส่งผ่านวัตถุ
Credential
ไปยังlinkWithCredential()
ของผู้ใช้ที่ลงชื่อเข้าใช้:try { final userCredential = await FirebaseAuth.instance.currentUser ?.linkWithCredential(credential); } on FirebaseAuthException catch (e) { switch (e.code) { case "provider-already-linked": print("The provider has already been linked to the user."); break; case "invalid-credential": print("The provider's credential is not valid."); break; case "credential-already-in-use": print("The account corresponding to the credential already exists, " "or is already linked to a Firebase User."); break; // See the API reference for the full list of error codes. default: print("Unknown error."); } ```
หากการเรียกใช้ linkWithCredential()
สำเร็จ บัญชีใหม่ของผู้ใช้จะสามารถเข้าถึงข้อมูล Firebase ของบัญชีที่ไม่ระบุชื่อได้
ขั้นตอนถัดไป
หลังจากที่ผู้ใช้สร้างบัญชีใหม่แล้ว บัญชีนี้จะถูกจัดเก็บเป็นส่วนหนึ่งของโครงการ Firebase ของคุณและสามารถใช้เพื่อระบุผู้ใช้ในทุกแอปในโครงการของคุณ โดยไม่คำนึงว่าผู้ใช้ใช้วิธีการลงชื่อเข้าใช้แบบใด
ในแอปของคุณ คุณสามารถรับข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ได้จากวัตถุ User
ดู จัดการผู้ใช้
ในกฎความปลอดภัยของ Firebase Realtime Database และ Cloud Storage คุณสามารถรับ ID ผู้ใช้ที่ไม่ซ้ำกันของผู้ใช้ที่ลงชื่อเข้าใช้จากตัวแปร auth
ความถูกต้อง และใช้เพื่อควบคุมข้อมูลที่ผู้ใช้สามารถเข้าถึงได้
คุณสามารถอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปของคุณโดยใช้ผู้ให้บริการตรวจสอบสิทธิ์หลายรายโดย เชื่อมโยงข้อมูลรับรองผู้ ให้บริการตรวจสอบสิทธิ์ ) กับบัญชีผู้ใช้ที่มีอยู่
หากต้องการลงชื่อออกจากผู้ใช้ ให้โทร signOut()
:
await FirebaseAuth.instance.signOut();