ตรวจสอบสิทธิ์กับ Firebase แบบไม่ระบุตัวตน

คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่อสร้างและใช้บัญชีชั่วคราวที่ไม่ระบุตัวตนได้ เพื่อตรวจสอบสิทธิ์กับ Firebase บัญชีชั่วคราวที่ไม่ระบุตัวตนเหล่านี้สามารถใช้เพื่อ อนุญาตให้ผู้ใช้ที่ยังไม่ได้ลงชื่อสมัครใช้แอปของคุณทำงานร่วมกับข้อมูลที่ได้รับการคุ้มครองได้ ตามกฎความปลอดภัย หากผู้ใช้ที่ไม่ระบุชื่อตัดสินใจลงชื่อสมัครใช้แอปของคุณ คุณสามารถทำสิ่งต่อไปนี้ได้ ลิงก์ข้อมูลเข้าสู่ระบบกับบัญชีที่ไม่ระบุชื่อ ว่าสามารถทำงานกับข้อมูลที่ได้รับการคุ้มครองในเซสชันในอนาคตต่อไปได้

ก่อนเริ่มต้น

  1. หากยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนในคู่มือเริ่มต้นใช้งาน

  2. เปิดใช้งานการลงชื่อเข้าใช้โดยไม่ระบุชื่อ:

    • ในส่วนการตรวจสอบสิทธิ์ของคอนโซล 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.");
 
}
}

แปลงบัญชีที่ไม่ระบุชื่อเป็นบัญชีถาวร

เมื่อผู้ใช้ที่ไม่ระบุชื่อลงชื่อสมัครใช้แอปของคุณ คุณอาจต้องการอนุญาต ทำงานต่อด้วยบัญชีใหม่ ตัวอย่างเช่น คุณอาจต้องการ ทำให้สินค้าที่ผู้ใช้เพิ่มลงในรถเข็นช็อปปิ้งก่อนที่จะลงชื่อสมัครใช้ อยู่ในรถเข็นช็อปปิ้งของบัญชีใหม่ โดยทำตามขั้นตอนต่อไปนี้ ขั้นตอน:

  1. เมื่อผู้ใช้ลงชื่อสมัครใช้ ให้ทําตามขั้นตอนการลงชื่อเข้าใช้สําหรับ ผู้ให้บริการการตรวจสอบสิทธิ์สูงสุด แต่ไม่นับรวมการเรียกหนึ่งใน signInWith- เมธอด เช่น รับโทเค็นรหัส Google ของผู้ใช้ โทเค็นเพื่อการเข้าถึงของ Facebook หรืออีเมลและรหัสผ่าน

  2. รับออบเจ็กต์ Credential สำหรับผู้ให้บริการตรวจสอบสิทธิ์รายใหม่:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);

    // Email and password sign-in
    final credential =
       
    EmailAuthProvider.credential(email: emailAddress, password: password);

    // Etc.
  3. ส่งออบเจ็กต์ 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();

Developer documentation for Firebase

อัปเดตแล้ว Aug 29, 2024