เชื่อมต่อแอปกับ Firebase
ติดตั้งและเริ่มต้น Firebase SDK สำหรับ Flutter หากยังไม่ได้ทำ ดังนั้น
เพิ่มการตรวจสอบสิทธิ์ Firebase ลงในแอป
จากรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง ปลั๊กอิน
flutter pub add firebase_auth
เมื่อดำเนินการเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter ใหม่โดยทำดังนี้
flutter run
นำเข้าปลั๊กอินในโค้ด Dart ของคุณดังนี้
import 'package:firebase_auth/firebase_auth.dart';
หากต้องการใช้ผู้ให้บริการการตรวจสอบสิทธิ์ คุณต้องเปิดใช้ในคอนโซล Firebase ไปที่หน้าวิธีการลงชื่อเข้าใช้ในส่วนการตรวจสอบสิทธิ์ Firebase เพื่อเปิดใช้ การลงชื่อเข้าใช้อีเมล/รหัสผ่านและผู้ให้บริการข้อมูลประจำตัวอื่นๆ ที่คุณต้องการสำหรับแอปของคุณ
(ไม่บังคับ) สร้างต้นแบบและทดสอบด้วย Firebase Local Emulator Suite
ก่อนที่จะพูดถึงวิธีที่แอปตรวจสอบสิทธิ์ผู้ใช้ เรามาแนะนำชุด ที่คุณสามารถใช้เพื่อสร้างต้นแบบและทดสอบฟังก์ชันการตรวจสอบสิทธิ์ ชุดโปรแกรมจำลองภายในของ Firebase ถ้าคุณกำลังตัดสินใจเลือกเทคนิคการตรวจสอบสิทธิ์ และผู้ให้บริการ การทดลองใช้โมเดลข้อมูลที่แตกต่างกัน ด้วยข้อมูลสาธารณะและข้อมูลส่วนตัว โดยใช้การตรวจสอบสิทธิ์และกฎการรักษาความปลอดภัยของ Firebase หรือการสร้างต้นแบบการออกแบบ UI ของการลงชื่อเข้าใช้ การทำงานภายในท้องถิ่นโดยไม่ทำให้บริการแบบสดเป็นความคิดที่ดี
โปรแกรมจำลองการตรวจสอบสิทธิ์เป็นส่วนหนึ่งของชุดโปรแกรมจำลองภายใน ทำให้แอปของคุณโต้ตอบกับเนื้อหาและการกำหนดค่าฐานข้อมูลที่จำลอง เช่น รวมทั้งทรัพยากรโครงการจำลอง (ฟังก์ชัน ฐานข้อมูลอื่นๆ และกฎความปลอดภัย)
การใช้โปรแกรมจำลองการตรวจสอบสิทธิ์มีเพียงไม่กี่ขั้นตอนดังนี้
การเพิ่มบรรทัดโค้ดลงในการกำหนดค่าการทดสอบของแอปเพื่อเชื่อมต่อกับโปรแกรมจำลอง
จากรูทของไดเรกทอรีโปรเจ็กต์ในเครื่องโดยเรียกใช้
firebase emulators:start
การใช้ UI ชุดโปรแกรมจำลองในเครื่องเพื่อสร้างต้นแบบแบบอินเทอร์แอกทีฟ หรือ REST API โปรแกรมจำลองการตรวจสอบสิทธิ์สำหรับการทดสอบแบบไม่โต้ตอบ
เรียกใช้
useAuthEmulator()
เพื่อระบุพอร์ตและที่อยู่ของโปรแกรมจำลอง:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
คุณสามารถดูคำแนะนำโดยละเอียดได้ที่เชื่อมต่อแอปกับโปรแกรมจำลองการตรวจสอบสิทธิ์ โปรดดูข้อมูลเพิ่มเติมที่ข้อมูลเบื้องต้นเกี่ยวกับชุดโปรแกรมจำลองภายใน
เอาล่ะ มาต่อเกี่ยวกับวิธีตรวจสอบสิทธิ์ผู้ใช้กัน
ตรวจสอบสถานะการตรวจสอบสิทธิ์ปัจจุบัน
Firebase Auth มีวิธีและยูทิลิตีมากมายที่ช่วยให้คุณผสานรวมได้ การตรวจสอบสิทธิ์ที่มีความปลอดภัยในแอปพลิเคชัน Flutter ใหม่หรือที่มีอยู่ของคุณ ในหลายๆ จุด คุณจะต้องทราบเกี่ยวกับสถานะการตรวจสอบสิทธิ์ของผู้ใช้ เช่น พวกเขาลงชื่อเข้าสู่ระบบหรือออกจากระบบแล้ว
Firebase Auth ให้คุณสมัครรับข้อมูลสถานะนี้แบบเรียลไทม์ผ่าน
Stream
เมื่อเรียกใช้ สตรีมจะแสดงเหตุการณ์ปัจจุบันของผู้ใช้ทันที
สถานะการตรวจสอบสิทธิ์ แล้วจะระบุเหตุการณ์หลังจากนั้นทุกเมื่อ
สถานะการตรวจสอบสิทธิ์จะเปลี่ยนไป
การฟังการเปลี่ยนแปลงสถานะการตรวจสอบสิทธิ์ทำได้ 3 วิธีดังนี้
authStateChanges()
หากต้องการสมัครรับข้อมูลการเปลี่ยนแปลงเหล่านี้ ให้เรียกเมธอด authStateChanges()
ใน
อินสแตนซ์ FirebaseAuth
:
FirebaseAuth.instance
.authStateChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
เหตุการณ์จะเริ่มทำงานเมื่อเกิดเหตุการณ์ต่อไปนี้
- หลังจากที่ลงทะเบียน Listener แล้ว
- เมื่อผู้ใช้ลงชื่อเข้าใช้
- เมื่อผู้ใช้ปัจจุบันออกจากระบบ
idTokenChanges()
หากต้องการสมัครรับข้อมูลการเปลี่ยนแปลงเหล่านี้ ให้เรียกเมธอด idTokenChanges()
ใน
อินสแตนซ์ FirebaseAuth
:
FirebaseAuth.instance
.idTokenChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
เหตุการณ์จะเริ่มทำงานเมื่อเกิดเหตุการณ์ต่อไปนี้
- หลังจากที่ลงทะเบียน Listener แล้ว
- เมื่อผู้ใช้ลงชื่อเข้าใช้
- เมื่อผู้ใช้ปัจจุบันออกจากระบบ
- เมื่อโทเค็นของผู้ใช้ปัจจุบันเปลี่ยนแปลง
userChanges()
หากต้องการสมัครรับข้อมูลการเปลี่ยนแปลงเหล่านี้ ให้เรียกเมธอด userChanges()
ใน
อินสแตนซ์ FirebaseAuth
:
FirebaseAuth.instance
.userChanges()
.listen((User? user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
เหตุการณ์จะเริ่มทำงานเมื่อเกิดเหตุการณ์ต่อไปนี้
- หลังจากที่ลงทะเบียน Listener แล้ว
- เมื่อผู้ใช้ลงชื่อเข้าใช้
- เมื่อผู้ใช้ปัจจุบันออกจากระบบ
- เมื่อโทเค็นของผู้ใช้ปัจจุบันเปลี่ยนแปลง
- เมื่อมีการเรียกเมธอดต่อไปนี้จาก
FirebaseAuth.instance.currentUser
reload()
unlink()
updateEmail()
updatePassword()
updatePhoneNumber()
updateProfile()
สถานะการตรวจสอบสิทธิ์ที่คงอยู่
Firebase SDK สำหรับทุกแพลตฟอร์มให้การรองรับในตัวเพื่อให้มั่นใจว่า สถานะการตรวจสอบสิทธิ์ของผู้ใช้จะยังคงอยู่ตลอดการรีสตาร์ทแอปหรือหน้าเว็บ โหลดซ้ำ
บนแพลตฟอร์มดั้งเดิม เช่น Android และ iOS การทำงานนี้ไม่สามารถกำหนดค่าได้ และสถานะการตรวจสอบสิทธิ์ของผู้ใช้จะยังคงอยู่ในอุปกรณ์ระหว่างแอป รีสตาร์ท ผู้ใช้สามารถล้างข้อมูลของแอปที่แคชไว้ได้โดยใช้การตั้งค่าอุปกรณ์ ซึ่งจะล้างสถานะที่มีอยู่ซึ่งกำลังจัดเก็บไว้
ในแพลตฟอร์มบนเว็บ ระบบจะเก็บสถานะการตรวจสอบสิทธิ์ของผู้ใช้ไว้ใน
IndexedDB
คุณสามารถเปลี่ยนการคงอยู่เพื่อเก็บข้อมูลในพื้นที่เก็บข้อมูลในเครื่อง
ด้วย Persistence.LOCAL
หากจำเป็น คุณสามารถเปลี่ยนลักษณะการทำงานเริ่มต้นให้คงไว้เฉพาะ
สถานะการตรวจสอบสิทธิ์สำหรับเซสชันปัจจุบัน หรือไม่มีเลย ในการกำหนดค่า
การตั้งค่า เรียกเมธอดต่อไปนี้ FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL);
คุณยังคงอัปเดตการถาวรสำหรับอินสแตนซ์การตรวจสอบสิทธิ์แต่ละรายการได้โดยใช้ 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);
ขั้นตอนถัดไป
ดูคำแนะนำในการลงชื่อเข้าใช้และลงชื่อสมัครใช้สำหรับผู้ใช้ด้วย Identity และการตรวจสอบสิทธิ์