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

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

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

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

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

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

เลือกโปรเจ็กต์ 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

ใช้เครื่องดนตรีกับแอปเพื่อพูดคุยกับโปรแกรมจำลอง

SDK สำหรับ Android, iOS และเว็บ

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

Kotlin+KTX
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)

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 SDK จะเชื่อมต่อกับโปรแกรมจำลอง 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 จะออกโทเค็นรหัส unsign ซึ่ง ได้รับการยอมรับโดยโปรแกรมจำลอง Firebase อื่นๆ หรือ Firebase Admin SDK เท่านั้น กำหนดค่าแล้ว เวอร์ชันที่ใช้งานจริงจะปฏิเสธโทเค็นเหล่านี้ บริการ Firebase หรือ Firebase Admin SDK ที่ทำงานในโหมดที่ใช้งานจริง (เช่น การทำงานเริ่มต้นที่ไม่มีขั้นตอนการตั้งค่าที่อธิบายไว้ข้างต้น)

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

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

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

firebase emulators:start

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

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

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

  1. สร้างผู้ใช้ที่มีปลายทาง REST สำหรับการลงชื่อสมัครใช้ Authentication
  2. ให้ผู้ใช้ลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านเพื่อทำการทดสอบ
  3. ดึงข้อมูลการยืนยันอีเมลนอกขอบเขตหากเกี่ยวข้องกับการทดสอบของคุณ จากปลายทาง REST เฉพาะโปรแกรม
  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; ป้อนโค้ดนี้ลงในแอปเพื่อจำลองผู้ใช้ ตรวจสอบ SMS ของพวกเขา

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

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

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

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

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

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

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

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

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

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

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

โปรดตรวจสอบลิงก์เอกสารด้านบน เลือกใช้ขั้นตอนใดก็ได้ ระหว่าง 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 ก็ได้ (เช่น ใน Branch ของโค้ด) และใช้ขั้นตอนการตรวจสอบสิทธิ์โทเค็นที่มีการจำลอง โทเค็นรหัสสำหรับบัญชีแทนที่จะเป็นข้อมูลเข้าสู่ระบบจริง

  1. กำหนดเส้นทางใหม่หรือแสดงความคิดเห็นส่วนของโค้ดที่ดึง idToken จาก IDP ทำให้คุณไม่ต้องป้อนชื่อผู้ใช้และรหัสผ่านจริงในระหว่าง และลดการทดสอบของคุณจากโควต้า API และขีดจำกัดอัตราที่ IdP
  2. ข้อที่ 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') หรือรหัสผู้ให้บริการอื่นๆ ที่คุณต้องการ เพื่อเลียนแบบ

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

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

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

โปรแกรมจำลอง Firebase Authentication จะจำลองฟีเจอร์หลายอย่างของเวอร์ชันที่ใช้งานจริง ผลิตภัณฑ์ แต่เนื่องจากระบบตรวจสอบสิทธิ์ทุกประเภท ความปลอดภัยในหลายระดับ (อุปกรณ์, ผู้ให้บริการบุคคลที่สาม, 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 แต่คุณจะต้อง พบข้อผิดพลาดในการดำเนินการดังกล่าว

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