เริ่มต้นใช้งานการรับรองความถูกต้องของ 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 หากคุณกำลังตัดสินใจเลือกเทคนิคและผู้ให้บริการการตรวจสอบสิทธิ์ การลองใช้โมเดลข้อมูลที่แตกต่างกันด้วยข้อมูลสาธารณะและส่วนตัวโดยใช้กฎการตรวจสอบสิทธิ์และ Firebase Security Rules หรือการสร้างต้นแบบการออกแบบ UI การลงชื่อเข้าใช้ ความสามารถในการทำงานในพื้นที่โดยไม่ต้องปรับใช้บริการสดอาจเป็นความคิดที่ดี .

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

การใช้โปรแกรมจำลองการรับรองความถูกต้องมีเพียงไม่กี่ขั้นตอน:

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

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

  3. การใช้ Local Emulator Suite UI สำหรับการสร้างต้นแบบเชิงโต้ตอบ หรือ REST API โปรแกรมจำลองการตรวจสอบสิทธิ์สำหรับการทดสอบแบบไม่โต้ตอบ

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

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

ดูคำแนะนำโดยละเอียดได้ที่ เชื่อมต่อแอปของคุณกับโปรแกรมจำลองการตรวจสอบสิทธิ์ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การแนะนำ 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);

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

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