Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

เริ่มต้นใช้งานการตรวจสอบสิทธิ์ Firebase บน Flutter

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

เชื่อมต่อแอปของคุณกับ Firebase

ติดตั้งและเริ่มต้น Firebase SDK สำหรับ Flutter หากคุณยังไม่ได้ดำเนินการ

เพิ่มการตรวจสอบสิทธิ์ Firebase ให้กับแอปของคุณ

  1. จากรูทของโปรเจ็กต์ Flutter ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน:

    flutter pub add firebase_auth
    
  2. เมื่อเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter ของคุณใหม่:

    flutter run
    
  3. นำเข้าปลั๊กอินในรหัส Dart ของคุณ:

    import 'package:firebase_auth/firebase_auth.dart';
    

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

(ไม่บังคับ) ต้นแบบและทดสอบด้วย Firebase Local Emulator Suite

ก่อนที่จะพูดถึงวิธีที่แอปของคุณตรวจสอบสิทธิ์ผู้ใช้ เรามาแนะนำชุดเครื่องมือที่คุณสามารถใช้เพื่อสร้างต้นแบบและทดสอบฟังก์ชันการตรวจสอบสิทธิ์: Firebase Local Emulator Suite หากคุณกำลังตัดสินใจเลือกเทคนิคการตรวจสอบสิทธิ์และผู้ให้บริการ ลองใช้โมเดลข้อมูลต่างๆ กับข้อมูลสาธารณะและส่วนตัวโดยใช้ Authentication และ Firebase Security Rules หรือการออกแบบ UI ในการลงชื่อเข้าใช้ต้นแบบ ความสามารถในการทำงานในพื้นที่โดยไม่ต้องใช้บริการสดอาจเป็นแนวคิดที่ดี .

โปรแกรมจำลองการตรวจสอบสิทธิ์เป็นส่วนหนึ่งของ Local Emulator Suite ซึ่งช่วยให้แอปของคุณสามารถโต้ตอบกับเนื้อหาและการกำหนดค่าฐานข้อมูลที่จำลองได้ รวมถึงทรัพยากรโครงการจำลอง (ฟังก์ชัน ฐานข้อมูลอื่นๆ และกฎความปลอดภัย)

การใช้โปรแกรมจำลองการตรวจสอบสิทธิ์มีเพียงไม่กี่ขั้นตอน:

  1. การเพิ่มบรรทัดโค้ดในการกำหนดค่าการทดสอบของแอปเพื่อเชื่อมต่อกับโปรแกรมจำลอง

  2. จากรูทของไดเร็กทอรีโปรเจ็กต์ในเครื่องของคุณ ให้รัน firebase emulators:start

  3. การใช้ Local Emulator Suite UI สำหรับการสร้างต้นแบบแบบโต้ตอบ หรือ Authentication emulator REST API สำหรับการทดสอบแบบไม่โต้ตอบ

  4. โทร useAuthEmulator() เพื่อระบุที่อยู่และพอร์ตของโปรแกรมจำลอง:

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // Ideal time to initialize
    await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
    //...
    }
    

มีคำแนะนำโดยละเอียดที่ Connect your app to the Authentication emulator สำหรับข้อมูลเพิ่มเติม โปรดดูที่การ แนะนำ Local Emulator Suite

มาต่อกันที่วิธีการตรวจสอบสิทธิ์ผู้ใช้กัน

ตรวจสอบสถานะการตรวจสอบสิทธิ์ปัจจุบัน

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

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

มีสามวิธีในการฟังการเปลี่ยนแปลงสถานะการรับรองความถูกต้อง:

authStateChanges()

หากต้องการสมัครรับการเปลี่ยนแปลงเหล่านี้ ให้เรียก authStateChanges() บนอินสแตนซ์ FirebaseAuth ของคุณ:

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

เหตุการณ์จะถูกไล่ออกเมื่อสิ่งต่อไปนี้เกิดขึ้น:

  • ทันทีหลังจากที่ผู้ฟังได้รับการลงทะเบียนแล้ว
  • เมื่อผู้ใช้ลงชื่อเข้าใช้
  • เมื่อผู้ใช้ปัจจุบันออกจากระบบ

idTokenChanges()

หากต้องการสมัครรับการเปลี่ยนแปลงเหล่านี้ ให้เรียก idTokenChanges() บนอินสแตนซ์ FirebaseAuth ของคุณ:

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

เหตุการณ์จะถูกไล่ออกเมื่อสิ่งต่อไปนี้เกิดขึ้น:

  • ทันทีหลังจากที่ผู้ฟังได้รับการลงทะเบียนแล้ว
  • เมื่อผู้ใช้ลงชื่อเข้าใช้
  • เมื่อผู้ใช้ปัจจุบันออกจากระบบ
  • เมื่อมีการเปลี่ยนแปลงโทเค็นของผู้ใช้ปัจจุบัน

userChanges()

หากต้องการสมัครรับการเปลี่ยนแปลงเหล่านี้ ให้เรียก userChanges() บนอินสแตนซ์ FirebaseAuth ของคุณ:

FirebaseAuth.instance
  .userChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

เหตุการณ์จะถูกไล่ออกเมื่อสิ่งต่อไปนี้เกิดขึ้น:

  • ทันทีหลังจากที่ผู้ฟังได้รับการลงทะเบียนแล้ว
  • เมื่อผู้ใช้ลงชื่อเข้าใช้
  • เมื่อผู้ใช้ปัจจุบันออกจากระบบ
  • เมื่อมีการเปลี่ยนแปลงโทเค็นของผู้ใช้ปัจจุบัน
  • เมื่อมีการเรียกเมธอดต่อไปนี้โดย FirebaseAuth.instance.currentUser :
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

สถานะการตรวจสอบสิทธิ์อย่างต่อเนื่อง

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

บนแพลตฟอร์มดั้งเดิม เช่น Android และ iOS ลักษณะการทำงานนี้ไม่สามารถกำหนดค่าได้ และสถานะการตรวจสอบสิทธิ์ของผู้ใช้จะยังคงอยู่ในอุปกรณ์ระหว่างการรีสตาร์ทแอป ผู้ใช้สามารถล้างข้อมูลแคชของแอปได้โดยใช้การตั้งค่าอุปกรณ์ ซึ่งจะล้างสถานะที่มีอยู่ที่จัดเก็บไว้

บนแพลตฟอร์มเว็บ สถานะการตรวจสอบสิทธิ์ของผู้ใช้จะถูกเก็บไว้ใน IndexedDB คุณสามารถเปลี่ยนการคงอยู่เพื่อเก็บข้อมูลในที่ จัดเก็บ ในตัวเครื่องได้โดยใช้ Persistence.LOCAL หากจำเป็น คุณสามารถเปลี่ยนการทำงานเริ่มต้นนี้เพื่อคงสถานะการตรวจสอบสิทธิ์สำหรับเซสชันปัจจุบันเท่านั้น หรือไม่ทำเลย ในการกำหนดการตั้งค่าเหล่านี้ ให้เรียกใช้เมธอดต่อไปนี้ FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); . คุณยังคงอัปเดตการคงอยู่ของอินสแตนซ์ Auth แต่ละรายการได้โดยใช้ setPersistence(Persistence.NONE)

// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);

ขั้นตอนถัดไป

สำรวจคำแนะนำในการลงชื่อเข้าใช้และลงทะเบียนผู้ใช้ด้วยบริการระบุตัวตนและการรับรองความถูกต้องที่รองรับ