เชื่อมต่อแอปของคุณกับโปรแกรมจำลองการตรวจสอบสิทธิ์

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

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

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

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

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

เลือกโปรเจ็กต์ Firebase

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

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

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

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

โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (ส่วนใหญ่จะผ่านคอนโซล Firebase)

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

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

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

การสาธิต

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

รหัสโครงการสำหรับโครงการสาธิตต้องมีคำนำหน้า 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:"127.0.0.1", port:9099)

Web modular API

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

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

Web namespaced API

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

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

SDK ผู้ดูแลระบบ

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

export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099"

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

ด้วยการตั้งค่าตัวแปรสภาพแวดล้อม 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 ที่ไม่ได้ลงชื่อ ซึ่งได้รับการยอมรับโดยโปรแกรมจำลอง 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://127.0.0.1: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://127.0.0.1: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 เฉพาะตัวจำลอง
  4. ล้างบันทึกผู้ใช้ด้วย จุดสิ้นสุด REST เฉพาะโปรแกรมจำลอง เพื่อการล้างข้อมูล

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

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

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

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

การใช้ UI ของ Emulator Suite:

  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 เพื่อตรวจสอบสิทธิ์ได้ด้วยวิธีใดวิธีหนึ่งจาก 2 วิธีต่อไปนี้

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

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

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

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

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

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

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

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

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

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

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

  1. ให้รางวัลหรือแสดงความคิดเห็นในส่วนของรหัสของคุณที่ดึง idTokens จาก IDP ซึ่งจะช่วยขจัดความจำเป็นในการป้อนชื่อผู้ใช้และรหัสผ่านจริงระหว่างการทดสอบของคุณ และลดการทดสอบของคุณจากโควต้า API และขีดจำกัดอัตราที่ IDP
  2. ประการที่สอง ใช้สตริง JSON ตามตัวอักษรแทนโทเค็นสำหรับ signInWithCredential เมื่อใช้ web 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 Web Tokens แบบกำหนดเองโดยใช้การเรียกเมธอด signInWithCustomToken บนแพลตฟอร์มที่รองรับ ดังที่อธิบายไว้ใน เอกสารประกอบการตรวจสอบสิทธิ์ที่ใช้งานจริง

Authentication emulator แตกต่างจากการใช้งานจริงอย่างไร

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

คลาวด์ไอเอเอ็ม

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

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

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

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

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

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

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

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

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

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

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

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

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

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

อะไรต่อไป?

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

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