คุณสามารถรวมการรับรองความถูกต้องของ Firebase เข้ากับระบบการตรวจสอบความถูกต้องที่กำหนดเองได้โดยการแก้ไขเซิร์ฟเวอร์การตรวจสอบความถูกต้องของคุณเพื่อสร้างโทเค็นที่ลงนามแบบกำหนดเองเมื่อผู้ใช้ลงชื่อเข้าใช้สำเร็จ แอปของคุณจะได้รับโทเค็นนี้และใช้เพื่อตรวจสอบสิทธิ์กับ Firebase
ก่อนที่คุณจะเริ่ม
- หากคุณยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนในคู่มือ เริ่มต้นใช้ งาน
- ติดตั้งและกำหนดค่า Firebase Admin SDK อย่าลืม เริ่มต้น SDK ด้วยข้อมูลรับรองที่ถูกต้องสำหรับโปรเจ็กต์ Firebase ของคุณ
ตรวจสอบสิทธิ์กับ Firebase
เมื่อผู้ใช้ลงชื่อเข้าใช้แอปของคุณ ให้ส่งข้อมูลรับรองการลงชื่อเข้าใช้ (เช่น ชื่อผู้ใช้และรหัสผ่าน) ไปยังเซิร์ฟเวอร์การตรวจสอบสิทธิ์ของคุณ เซิร์ฟเวอร์ของคุณจะตรวจสอบข้อมูลรับรอง และ สร้างโทเค็น Firebase แบบกำหนดเอง หากถูกต้อง และส่งโทเค็นกลับไปที่แอปของคุณ
หลังจากที่คุณได้รับโทเค็นแบบกำหนดเองจากเซิร์ฟเวอร์การตรวจสอบความถูกต้องของคุณแล้ว ให้ส่งต่อไปยัง
signInWithCustomToken()
เพื่อลงชื่อเข้าใช้ผู้ใช้:try { final userCredential = await FirebaseAuth.instance.signInWithCustomToken(token); print("Sign-in successful."); } on FirebaseAuthException catch (e) { switch (e.code) { case "invalid-custom-token": print("The supplied token is not a Firebase custom auth token."); break; case "custom-token-mismatch": print("The supplied token is for a different Firebase project."); break; default: print("Unkown error."); } }
ขั้นตอนถัดไป
หลังจากที่ผู้ใช้สร้างบัญชีใหม่ บัญชีนี้จะถูกจัดเก็บเป็นส่วนหนึ่งของโปรเจ็กต์ Firebase ของคุณ และสามารถใช้เพื่อระบุผู้ใช้ในทุกแอปในโปรเจ็กต์ของคุณ ไม่ว่าผู้ใช้จะใช้วิธีการลงชื่อเข้าใช้แบบใดก็ตาม
ในแอปของคุณ คุณสามารถรับข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ได้จากออบเจ็กต์ User
ดู จัดการผู้ใช้
ในฐานข้อมูล Firebase Realtime และกฎความปลอดภัยของ Cloud Storage คุณสามารถรับ ID ผู้ใช้เฉพาะของผู้ใช้ที่ลงชื่อเข้าใช้ได้จากตัวแปร auth
และใช้เพื่อควบคุมข้อมูลที่ผู้ใช้สามารถเข้าถึงได้
คุณสามารถอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปของคุณโดยใช้ผู้ให้บริการตรวจสอบสิทธิ์หลายรายโดย การเชื่อมโยงข้อมูลประจำตัวของผู้ให้บริการตรวจสอบสิทธิ์ ) กับบัญชีผู้ใช้ที่มีอยู่
หากต้องการออกจากระบบผู้ใช้ ให้โทร signOut()
:
await FirebaseAuth.instance.signOut();