Firebase is back at Google I/O on May 10! Register now

เชื่อมต่อแอพของคุณกับ Authentication Emulator

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

ก่อนใช้โปรแกรมจำลองการตรวจสอบความถูกต้องกับแอปของคุณ ตรวจสอบให้แน่ใจว่าคุณ เข้าใจเวิร์กโฟลว์ Firebase Local Emulator Suite โดยรวม และคุณ ได้ติดตั้งและกำหนด ค่า Local Emulator Suite และตรวจสอบ คำสั่ง CLI

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

ฉันสามารถทำอะไรกับโปรแกรมจำลองการตรวจสอบสิทธิ์ได้บ้าง

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

  • สร้าง อัปเดต และจัดการบัญชีผู้ใช้จำลองสำหรับทดสอบอีเมล/รหัสผ่าน หมายเลขโทรศัพท์/SMS SMS แบบหลายปัจจัย และการรับรองความถูกต้องของผู้ให้บริการข้อมูลประจำตัวบุคคลที่สาม (เช่น Google)
  • ดูและแก้ไขผู้ใช้ที่จำลอง
  • ระบบพิสูจน์ตัวตนโทเค็นแบบกำหนดเองต้นแบบ
  • ตรวจสอบข้อความที่เกี่ยวข้องกับการรับรองความถูกต้องในแท็บ Emulator UI Logs

เลือกโครงการ Firebase

Firebase Local Emulator Suite จำลองผลิตภัณฑ์สำหรับโปรเจ็กต์ Firebase เดียว

ในการเลือกโปรเจ็กต์ที่จะใช้ ก่อนที่คุณจะเริ่มโปรแกรมจำลอง ให้เรียก firebase use ใน CLI ในไดเร็กทอรีการทำงานของคุณ หรือคุณสามารถส่งแฟล็ก --project ไปยังแต่ละคำสั่งจำลอง

Local Emulator Suite รองรับการจำลองโครงการ Firebase จริง และโครงการ สาธิต

ประเภทโครงการ คุณสมบัติ ใช้กับอีมูเลเตอร์
จริง

โครงการ Firebase จริงคือโครงการที่คุณสร้างและกำหนดค่า (น่าจะผ่านคอนโซล Firebase)

โปรเจ็กต์จริงมีทรัพยากรที่ใช้งานอยู่ เช่น อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นๆ ที่คุณตั้งค่าสำหรับโปรเจ็กต์ Firebase นั้น

เมื่อทำงานกับโปรเจ็กต์ Firebase จริง คุณสามารถเรียกใช้โปรแกรมจำลองสำหรับผลิตภัณฑ์ใดๆ หรือทั้งหมดที่รองรับ

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

การสาธิต

โครงการ Firebase สาธิตไม่มีการกำหนดค่า Firebase จริง และไม่มีทรัพยากรที่ใช้งานจริง โครงการเหล่านี้มักจะเข้าถึงได้ผ่าน codelabs หรือบทช่วยสอนอื่นๆ

รหัสโครงการสำหรับโครงการสาธิตมีคำนำหน้า demo-

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

เราขอแนะนำให้คุณใช้โครงการสาธิตหากเป็นไปได้ สิทธิประโยชน์รวมถึง:

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

เครื่องมือให้แอปของคุณคุยกับอีมูเลเตอร์

Android, iOS และเว็บ SDK

ตั้งค่าการกำหนดค่าในแอปหรือคลาสทดสอบเพื่อโต้ตอบกับโปรแกรมจำลองการตรวจสอบสิทธิ์ดังนี้

Kotlin+KTX
Firebase.auth.useEmulator("10.0.2.2", 9099)
Java
FirebaseAuth.getInstance().useEmulator("10.0.2.2", 9099);
สวิฟต์
Auth.auth().useEmulator(withHost:"localhost", port:9099)

Web version 9

import { getAuth, connectAuthEmulator } from "firebase/auth";

const auth = getAuth();
connectAuthEmulator(auth, "http://localhost:9099");

Web version 8

const auth = firebase.auth();
auth.useEmulator("http://localhost:9099");

ไม่จำเป็นต้องมีการตั้งค่าเพิ่มเติมเพื่อสร้างต้นแบบและทดสอบการโต้ตอบระหว่างการรับรองความถูกต้องและฟังก์ชันคลาวด์หรือกฎความปลอดภัยของ Firebase สำหรับ Cloud Firestore หรือฐานข้อมูลเรียลไทม์ เมื่อกำหนดค่าโปรแกรมจำลองการพิสูจน์ตัวตนและโปรแกรมจำลองอื่นๆ กำลังทำงาน ทั้งสองจะทำงานร่วมกันโดยอัตโนมัติ

Admin SDK

Firebase Admin SDK จะเชื่อมต่อกับโปรแกรมจำลองการตรวจสอบสิทธิ์โดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม FIREBASE_AUTH_EMULATOR_HOST

export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"

โปรดทราบว่าตัวจำลอง Cloud Functions จะรับรู้ถึงตัวจำลองการตรวจสอบสิทธิ์โดยอัตโนมัติ ดังนั้นคุณจึงสามารถข้ามขั้นตอนนี้เมื่อทดสอบการผสานรวมระหว่าง Cloud Functions และตัวจำลองการตรวจสอบสิทธิ์ ตัวแปรสภาพแวดล้อมจะถูกตั้งค่าโดยอัตโนมัติสำหรับ Admin SDK ใน Cloud Functions

เมื่อตั้งค่าตัวแปรสภาพแวดล้อมแล้ว Firebase Admin SDK จะยอมรับโทเค็น ID ที่ไม่ได้ลงนามและคุกกี้เซสชันที่ออกโดยโปรแกรมจำลองการตรวจสอบสิทธิ์ (ผ่านวิธี verifyIdToken และ createSessionCookie ตามลำดับ) เพื่ออำนวยความสะดวกในการพัฒนาและทดสอบในเครื่อง โปรดตรวจสอบ ว่าไม่ได้ ตั้งค่าตัวแปรสภาพแวดล้อมในการผลิต

หากต้องการให้โค้ด Admin SDK เชื่อมต่อกับโปรแกรมจำลองที่ใช้ร่วมกันซึ่งทำงานในสภาพแวดล้อมอื่น คุณจะต้องระบุ รหัสโปรเจ็กต์เดียวกับที่คุณตั้งค่าโดยใช้ Firebase CLI คุณสามารถส่งรหัสโปรเจ็กต์เพื่อ initializeApp โดยตรงหรือตั้งค่าตัวแปรสภาพแวดล้อม GCLOUD_PROJECT

SDK ผู้ดูแลระบบ Node.js
admin.initializeApp({ projectId: "your-project-id" });
ตัวแปรสภาพแวดล้อม
export GCLOUD_PROJECT="your-project-id"

โทเค็น ID

ด้วยเหตุผลด้านความปลอดภัย โปรแกรมจำลองการตรวจสอบสิทธิ์จะออกโทเค็น ID ที่ไม่ได้ลงนาม ซึ่งยอมรับโดยโปรแกรมจำลอง Firebase อื่นเท่านั้น หรือ Firebase Admin SDK เมื่อ กำหนดค่า โทเค็นเหล่านี้จะถูกปฏิเสธโดยบริการ Firebase ที่ใช้งานจริงหรือ Firebase Admin SDK ที่ทำงานในโหมดที่ใช้งานจริง (เช่น ลักษณะการทำงานเริ่มต้นโดยไม่มีขั้นตอนการตั้งค่าที่อธิบายไว้ด้านบน)

เริ่มโปรแกรมจำลอง

คุณสามารถใช้โปรแกรมจำลองการรับรองความถูกต้องแบบโต้ตอบผ่าน Emulator Suite UI และแบบไม่โต้ตอบผ่านอินเทอร์เฟซ REST ในเครื่อง ส่วนต่อไปนี้ครอบคลุมกรณีการใช้งานแบบโต้ตอบและไม่โต้ตอบ

ในการเริ่มโปรแกรมจำลองการตรวจสอบสิทธิ์ อินเทอร์เฟซ REST และ Emulator Suite UI ให้ดำเนินการ:

firebase emulators:start

สำหรับ การตรวจสอบสิทธิ์แบบไม่ระบุ ชื่อ แอปของคุณสามารถใช้ตรรกะการลงชื่อเข้าใช้สำหรับแพลตฟอร์มของคุณ ( iOS , Android , เว็บ )

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

  1. ใน Emulator Suite UI ให้คลิกแท็บ การรับรองความถูกต้อง
  2. คลิกปุ่ม เพิ่มผู้ใช้
  3. ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้ กรอกข้อมูลในฟิลด์การรับรองความถูกต้องของอีเมล

เมื่อสร้างผู้ใช้ทดสอบแล้ว แอปของคุณสามารถลงชื่อผู้ใช้เข้าและออกด้วยตรรกะ SDK สำหรับแพลตฟอร์มของคุณ ( iOS , Android , เว็บ )

สำหรับการทดสอบการยืนยันอีเมล/การลงชื่อเข้าใช้ด้วยโฟลว์ลิงก์อีเมล โปรแกรมจำลองจะพิมพ์ URL ไปยังเทอร์มินัลที่ดำเนินการ firebase emulators:start

i  To verify the email address customer@ex.com, follow this link:
http://localhost:9099/emulator/action?mode=verifyEmail&lang=en&oobCode=XYZ123&apiKey=fake-api-key

วางลิงก์ลงในเบราว์เซอร์ของคุณเพื่อจำลองเหตุการณ์การยืนยัน และตรวจสอบว่าการยืนยันสำเร็จหรือไม่

{
  "authEmulator": {
    "success": "The email has been successfully verified.",
    "email": "customer@example.com"
  }
}

สำหรับการทดสอบการรีเซ็ตรหัสผ่าน โปรแกรมจำลองจะพิมพ์ URL ที่คล้ายกัน รวมถึงพารามิเตอร์ รหัสผ่านใหม่ (ซึ่งคุณสามารถเปลี่ยนได้ตามต้องการ) ไปยังเทอร์มินัล

http://localhost:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD

การทดสอบแบบไม่โต้ตอบ

แทนที่จะใช้ Emulator Suite UI หรือรหัสไคลเอนต์เพื่อจัดการบัญชีผู้ใช้อีเมล/รหัสผ่าน คุณสามารถเขียนสคริปต์การตั้งค่าทดสอบที่เรียกใช้ REST API เพื่อสร้างและลบบัญชีผู้ใช้ และดึงรหัสยืนยันอีเมลนอกแบนด์เพื่อเติมการยืนยันอีเมลจำลอง URL. สิ่งนี้ทำให้แพลตฟอร์มและโค้ดทดสอบแยกจากกัน และช่วยให้คุณทดสอบแบบไม่โต้ตอบได้

สำหรับขั้นตอนการทดสอบอีเมลและรหัสผ่านแบบไม่โต้ตอบ ลำดับทั่วไปจะเป็นดังนี้

  1. สร้างผู้ใช้ด้วย จุดสิ้นสุดการลงทะเบียนการรับรองความถูกต้อง REST
  2. ลงชื่อเข้าใช้ผู้ใช้โดยใช้อีเมลและรหัสผ่านเพื่อทำการทดสอบ
  3. หากใช้ได้กับการทดสอบของคุณ ให้ดึงข้อมูลรหัสยืนยันอีเมลนอกแบนด์ที่มีอยู่จาก REST endpont เฉพาะของอีมูเลเตอร์
  4. ล้างข้อมูลผู้ใช้ด้วย จุดสิ้นสุด REST เฉพาะโปรแกรมจำลอง สำหรับการล้างข้อมูล

การตรวจสอบโทรศัพท์จำลอง/SMS

สำหรับการตรวจสอบสิทธิ์ทางโทรศัพท์ โปรแกรมจำลองการตรวจสอบสิทธิ์ไม่รองรับ:

  • reCAPTCHA และกระแส APN เมื่อกำหนดค่าให้โต้ตอบกับโปรแกรมจำลองแล้ว SDK ของไคลเอ็นต์จะปิดใช้วิธีการตรวจสอบเหล่านี้ในลักษณะที่คล้ายกับที่อธิบายไว้สำหรับการทดสอบการผสานรวม ( iOS , Android , เว็บ )
  • ทดสอบหมายเลขโทรศัพท์ด้วยรหัสที่กำหนดค่าล่วงหน้าในคอนโซล Firebase

มิฉะนั้น ในแง่ของรหัสไคลเอ็นต์ ขั้นตอนการตรวจสอบความถูกต้องของโทรศัพท์/SMS จะเหมือนกับที่อธิบายไว้สำหรับการผลิต ( iOS , Android , เว็บ )

การใช้ Emulator Suite UI:

  1. ใน Emulator Suite UI ให้คลิกแท็บ การรับรองความถูกต้อง
  2. คลิกปุ่ม เพิ่มผู้ใช้
  3. ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้ กรอกข้อมูลในฟิลด์การรับรองความถูกต้องของโทรศัพท์

อย่างไรก็ตาม สำหรับขั้นตอนการยืนยันตัวตนทางโทรศัพท์ ตัวจำลองจะไม่เรียกใช้การส่งข้อความใดๆ เนื่องจากการติดต่อผู้ให้บริการอยู่นอกขอบเขตและไม่เหมาะสำหรับการทดสอบในพื้นที่! ตัวจำลองจะพิมพ์รหัสที่จะส่งทาง SMS ไปยังเทอร์มินัลเดียวกับที่คุณเรียกใช้ firebase emulators:start ป้อนรหัสนี้ไปยังแอปเพื่อจำลองผู้ใช้ตรวจสอบข้อความของพวกเขา

การทดสอบแบบไม่โต้ตอบ

สำหรับการทดสอบการยืนยันตัวตนทางโทรศัพท์แบบไม่โต้ตอบ ให้ใช้ REST API ของโปรแกรมจำลองการพิสูจน์ตัวตนเพื่อดึงรหัส SMS ที่มี โปรดทราบว่ารหัสจะแตกต่างกันทุกครั้งที่คุณเริ่มต้นโฟลว์

ลำดับทั่วไปมีดังนี้

  1. โทรหาแพลตฟอร์ม signInWithPhoneNumber เพื่อเริ่มกระบวนการยืนยัน
  2. รับรหัสยืนยันโดยใช้ จุดสิ้นสุด REST เฉพาะโปรแกรมจำลอง
  3. โทร confirmationResult.confirm(code) ตามปกติด้วยรหัสยืนยัน

SMS หลายปัจจัย

โปรแกรมจำลองการตรวจสอบสิทธิ์รองรับการสร้างต้นแบบและทดสอบโฟลว์การตรวจสอบสิทธิ์แบบหลายปัจจัย (MFA) ทาง SMS ที่มีอยู่ในเวอร์ชันที่ใช้งานจริงสำหรับ iOS , Android และ เว็บ

เมื่อคุณเพิ่มผู้ใช้จำลองลงในโปรแกรมจำลอง คุณสามารถเปิดใช้งาน MFA และกำหนดค่าหมายเลขโทรศัพท์อย่างน้อยหนึ่งหมายเลขที่จะส่งข้อความ SMS ปัจจัยที่สอง ข้อความจะถูกส่งออกไปยังเทอร์มินัลเดียวกันกับที่คุณรัน firebase emulators:start และพร้อมใช้งานจากอินเทอร์เฟซ REST

จำลองการรับรองความถูกต้องของผู้ให้บริการข้อมูลประจำตัวบุคคลที่สาม (IDP)

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

โดยทั่วไป คุณสามารถใช้ Firebase SDK เพื่อตรวจสอบสิทธิ์ได้สองวิธี:

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

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

การทดสอบโฟลว์ IDP ที่ขับเคลื่อนด้วย SDK ของ Firebase

หากแอปของคุณใช้ขั้นตอนแบบ end-to-end ของ Firebase SDK เช่น OAuthProvider สำหรับการลงชื่อเข้าใช้ด้วย Microsoft, GitHub หรือ Yahoo สำหรับการทดสอบแบบโต้ตอบ โปรแกรมจำลองการตรวจสอบสิทธิ์จะให้บริการหน้าลงชื่อเข้าใช้ที่เกี่ยวข้องในเวอร์ชันท้องถิ่นเพื่อช่วยคุณในการทดสอบ การรับรองความถูกต้องจากเว็บแอปที่เรียกใช้เมธอด signinWithPopup หรือ signInWithRedirect หน้าลงชื่อเข้าใช้ที่ให้บริการในเครื่องนี้ยังปรากฏในแอปบนอุปกรณ์เคลื่อนที่ ซึ่งแสดงผลโดยไลบรารีมุมมองเว็บของแพลตฟอร์มของคุณ

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

การทดสอบโฟลว์ IDP ด้วยการดึงข้อมูลรับรองด้วยตนเอง

หากคุณใช้เทคนิคการลงชื่อเข้าใช้ "ด้วยตนเอง" และเรียกใช้เมธอด signInWithCredentials ของแพลตฟอร์ม ตามปกติแล้ว แอปของคุณจะร้องขอการลงชื่อเข้าใช้จริงจากบุคคลที่สามและเรียกข้อมูลรับรองจริงจากบุคคลที่สาม

โปรดทราบว่าโปรแกรมจำลองรองรับเฉพาะการตรวจสอบสิทธิ์ signInWithCredential สำหรับข้อมูลประจำตัวที่ดึงมาจาก Google Sign-In, Apple และผู้ให้บริการรายอื่นที่ใช้โทเค็น ID ซึ่งใช้เป็น JSON Web Token (JWT) ไม่รองรับโทเค็นการเข้าถึง (เช่น ที่มาจาก Facebook หรือ Twitter ซึ่งไม่ใช่ JWT) ส่วนถัดไปจะกล่าวถึงทางเลือกอื่นในกรณีเหล่านี้

การทดสอบแบบไม่โต้ตอบ

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

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

  1. ให้รางวัลหรือแสดงความคิดเห็นในส่วนของรหัสของคุณที่ดึง idTokens จาก IDP สิ่งนี้ทำให้ไม่จำเป็นต้องป้อนชื่อผู้ใช้และรหัสผ่านจริงระหว่างการทดสอบของคุณ และลดการทดสอบของคุณจากโควต้า API และการจำกัดอัตราที่ IDP
  2. ประการที่สอง ใช้สตริง JSON ตามตัวอักษรแทนโทเค็นสำหรับ signInWithCredential เมื่อใช้เว็บ SDK เป็นตัวอย่าง คุณสามารถเปลี่ยนโค้ดเป็น:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

เมื่อใช้กับโปรแกรมจำลอง โค้ดนี้จะยืนยันตัวตนผู้ใช้ด้วยอีเมล foo@example.com ที่ Google ได้สำเร็จ คิดว่าฟิลด์ย่อยเป็นคีย์หลัก ซึ่งสามารถเปลี่ยนเป็นสตริงใดก็ได้ จำลองการลงชื่อเข้าใช้ของผู้ใช้ที่แตกต่างกัน คุณสามารถแทนที่ firebase.auth.GoogleAuthProvider ด้วย ตัวอย่างเช่น new firebase.auth.OAuthProvider('yahoo.com') หรือรหัสผู้ให้บริการอื่นๆ ที่คุณต้องการจำลอง

จำลองการรับรองความถูกต้องของโทเค็นแบบกำหนดเอง

ตัวจำลองการตรวจสอบสิทธิ์จัดการการตรวจสอบความถูกต้องด้วยโทเค็นเว็บ JSON ที่กำหนดเองโดยใช้การเรียกไปยังเมธอด signInWithCustomToken บนแพลตฟอร์มที่รองรับ ดังที่อธิบายไว้ใน เอกสารคู่มือการตรวจสอบสิทธิ์ที่ใช้งานจริง

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

โปรแกรมจำลองการตรวจสอบความถูกต้องของ Firebase จะจำลองคุณลักษณะต่างๆ ของผลิตภัณฑ์ที่ใช้งานจริง อย่างไรก็ตาม เนื่องจากระบบการตรวจสอบสิทธิ์ประเภทใดก็ตามต้องอาศัยการรักษาความปลอดภัยอย่างมากในหลายระดับ (อุปกรณ์ ผู้ให้บริการบุคคลที่สาม Firebase ฯลฯ) จึงเป็นเรื่องยากสำหรับโปรแกรมจำลองที่จะสร้างโฟลว์ทั้งหมดอย่างถูกต้อง

คลาวด์ไอแอม

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

เนื่องจากบนแพลตฟอร์มมือถือ การลงชื่อเข้าใช้ลิงก์อีเมลอาศัย Firebase Dynamic Links ลิงก์ดังกล่าวทั้งหมดจะเปิดบนแพลตฟอร์มเว็บ (มือถือ) แทน

การลงชื่อเข้าใช้บุคคลที่สาม

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

ข้อมูลรับรองจริงจากผู้ให้บริการ OpenID Connect เช่น Google และ Apple ได้รับการยอมรับโดยโปรแกรมจำลองการตรวจสอบสิทธิ์ ไม่รองรับข้อมูลรับรองจากผู้ให้บริการที่ไม่ใช่ OpenID Connect

ลงชื่อเข้าใช้อีเมล / SMS

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

โปรแกรมจำลองไม่รองรับความสามารถในการกำหนดหมายเลขโทรศัพท์ทดสอบด้วยรหัสการเข้าสู่ระบบแบบตายตัว ซึ่งทำได้โดยใช้คอนโซล Firebase

การรับรองความถูกต้องของโทเค็นแบบกำหนดเอง

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

การจำกัดอัตรา / การต่อต้านการละเมิด

ตัวจำลองการรับรองความถูกต้องไม่ได้จำลองคุณลักษณะการจำกัดอัตราการผลิตหรือการป้องกันการละเมิด

ฟังก์ชั่นการปิดกั้น

ในการใช้งานจริง ผู้ใช้จะถูกเขียนไปยังที่เก็บข้อมูลหลังจากทั้งเหตุการณ์ beforeCreate และ beforeSignIn ถูกทริกเกอร์ อย่างไรก็ตาม เนื่องจากข้อจำกัดทางเทคนิค โปรแกรมจำลองการตรวจสอบสิทธิ์จะเขียนเพื่อจัดเก็บสองครั้ง ครั้งแรกหลังจากสร้างผู้ใช้ และอีกครั้งหลังจากลงชื่อเข้าใช้ ซึ่งหมายความว่าสำหรับผู้ใช้ใหม่ คุณสามารถเรียกใช้ getAuth().getUser() ใน beforeSignIn ในโปรแกรมจำลองการตรวจสอบสิทธิ์ได้สำเร็จ แต่คุณจะพบข้อผิดพลาดในการทำเช่นนั้นในเวอร์ชันที่ใช้งานจริง

อะไรต่อไป?

  • สำหรับชุดวิดีโอที่คัดสรรมาอย่างดีและตัวอย่างวิธีใช้โดยละเอียด โปรดติดตาม เพลย์ลิสต์การฝึกอบรม Firebase Emulators

  • เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมกับการตรวจสอบสิทธิ์โดยทั่วไป เรียนรู้เพิ่มเติมเกี่ยวกับ Cloud Functions for Firebase emulator ได้ที่ Run functions locally