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