คุณสามารถใช้การตรวจสอบสิทธิ์ 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 และกฎความปลอดภัยของ Cloud Storage คุณสามารถรับรหัสผู้ใช้เฉพาะของผู้ใช้ที่ลงชื่อเข้าใช้ได้จากตัวแปร auth
และใช้เพื่อควบคุมข้อมูลที่ผู้ใช้จะเข้าถึงได้
คุณสามารถอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปของคุณโดยใช้ผู้ให้บริการตรวจสอบสิทธิ์หลายรายโดย การเชื่อมโยงข้อมูลประจำตัวของผู้ให้บริการตรวจสอบสิทธิ์ ) กับบัญชีผู้ใช้ที่มีอยู่
หากต้องการออกจากระบบผู้ใช้ ให้โทร signOut()
:
await FirebaseAuth.instance.signOut();