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

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

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

ฉันทำอะไรได้บ้างด้วยโปรแกรมจำลอง Authentication

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

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

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

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

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

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

ประเภทโปรเจ็กต์ ฟีเจอร์ ใช้กับโปรแกรมจำลอง
จริง

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

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

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

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

สาธิต

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

รหัสโปรเจ็กต์สำหรับโปรเจ็กต์สาธิตจะมีคำนำหน้า demo-

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

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

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

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

SDK ของ Android, iOS และเว็บ

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

Kotlin
Firebase.auth.useEmulator("10.0.2.2", 9099)
Java
FirebaseAuth.getInstance().useEmulator("10.0.2.2", 9099);
Swift
Auth.auth().useEmulator(withHost:"127.0.0.1", port:9099)
Unity
FirebaseAuth auth = FirebaseAuth.DefaultInstance;
// Connects to the Auth Emulator running on port 9099
auth.UseEmulator("127.0.0.1", 9099);

Web

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

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

Web

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

คุณไม่จำเป็นต้องตั้งค่าเพิ่มเติมเพื่อสร้างต้นแบบและทดสอบการโต้ตอบระหว่าง Authentication และ Cloud Functions หรือ Firebase Security Rules สำหรับ Cloud Firestore หรือ Realtime Database เมื่อกำหนดค่าโปรแกรมจำลอง Authentication และโปรแกรมจำลองอื่นๆ ทำงานอยู่ โปรแกรมจำลองเหล่านี้จะทำงานร่วมกันโดยอัตโนมัติ

Admin SDK

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

export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099"

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

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

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

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

โทเค็นรหัส

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

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

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

หากต้องการเริ่มโปรแกรมจำลอง Authentication อินเทอร์เฟซ REST และ Emulator Suite UI ให้ดำเนินการดังนี้

firebase emulators:start

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

สำหรับการตรวจสอบสิทธิ์ด้วยอีเมล/รหัสผ่าน คุณสามารถเริ่มสร้างต้นแบบได้โดยการเพิ่ม บัญชีผู้ใช้ลงในโปรแกรมจำลองAuthenticationจากแอปโดยใช้เมธอดAuthentication 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 ที่คล้ายกัน ซึ่งรวมถึงพารามิเตอร์ newPassword (ซึ่งคุณอาจเปลี่ยนได้ตามต้องการ) ไปยังเทอร์มินัล

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 เพื่อสร้าง และลบบัญชีผู้ใช้ รวมถึงดึงรหัสยืนยันอีเมลแบบ Out-of-Band เพื่อป้อนข้อมูลใน URL การยืนยันอีเมลของโปรแกรมจำลอง วิธีนี้จะแยกแพลตฟอร์มและโค้ดทดสอบออกจากกัน และช่วยให้คุณทดสอบแบบไม่โต้ตอบได้

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

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

การตรวจสอบสิทธิ์ด้วยโทรศัพท์/SMS ที่จำลองขึ้น

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

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

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

การใช้ Emulator Suite UI

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

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

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

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

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

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

SMS แบบหลายปัจจัย

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. เปลี่ยนเส้นทางหรือแสดงความคิดเห็นในส่วนของโค้ดที่ดึง idToken จาก 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 ได้สำเร็จ โปรดคิดว่าฟิลด์ sub เป็นคีย์หลัก ซึ่งสามารถเปลี่ยนเป็นสตริงใดก็ได้เพื่อจำลองการลงชื่อเข้าใช้ของผู้ใช้ที่แตกต่างกัน คุณสามารถ แทนที่ firebase.auth.GoogleAuthProvider ด้วย เช่น new firebase.auth.OAuthProvider('yahoo.com') หรือรหัสผู้ให้บริการอื่นๆ ที่คุณต้องการ จำลอง

การตรวจสอบสิทธิ์โทเค็นที่กำหนดเองที่จำลองขึ้น

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

ความแตกต่างระหว่างโปรแกรมจำลองAuthenticationกับเวอร์ชันที่ใช้งานจริง

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

Cloud IAM

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

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

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

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

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

การลงชื่อเข้าใช้ด้วยอีเมล / SMS

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

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

การตรวจสอบสิทธิ์โทเค็นที่กำหนดเอง

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

การจำกัดอัตราคำขอ / การป้องกันการละเมิด

โปรแกรมจำลอง Authentication จะไม่จำลองการจำกัดอัตราคำขอหรือฟีเจอร์การป้องกันการละเมิด ของเวอร์ชันที่ใช้งานจริง

ฟังก์ชันการบล็อก

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

ฉันควรทำอย่างไรต่อไป