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

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

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

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

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

    1. ในคอนโซล Firebase ให้ไปที่ความปลอดภัย > การตรวจสอบสิทธิ์

    2. ในแท็บวิธีการลงชื่อเข้าใช้ ให้เปิดใช้ผู้ให้บริการการลงชื่อเข้าใช้แบบไม่ระบุชื่อ

    3. คลิกบันทึก

ตรวจสอบสิทธิ์กับ 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();