ก่อนใช้โปรแกรมจำลองการตรวจสอบความถูกต้องกับแอปของคุณ ตรวจสอบให้แน่ใจว่าคุณ เข้าใจเวิร์กโฟลว์ 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 หรือบทช่วยสอนอื่นๆ รหัสโครงการสำหรับโครงการสาธิตมีคำนำหน้า | เมื่อทำงานกับโปรเจ็กต์ 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 หรือฐานข้อมูลเรียลไทม์ เมื่อกำหนดค่าโปรแกรมจำลองการพิสูจน์ตัวตนและโปรแกรมจำลองอื่นๆ กำลังทำงาน ทั้งสองจะทำงานร่วมกันโดยอัตโนมัติ
Admin SDK
Firebase Admin SDK จะเชื่อมต่อกับโปรแกรมจำลองการตรวจสอบสิทธิ์โดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม FIREBASE_AUTH_EMULATOR_HOST
export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1: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
- ใน Emulator Suite UI ให้คลิกแท็บ การรับรองความถูกต้อง
- คลิกปุ่ม เพิ่มผู้ใช้
- ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้ กรอกข้อมูลในฟิลด์การรับรองความถูกต้องของอีเมล
เมื่อสร้างผู้ใช้ทดสอบแล้ว แอปของคุณสามารถลงชื่อผู้ใช้เข้าและออกด้วยตรรกะ 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. สิ่งนี้ทำให้แพลตฟอร์มและโค้ดทดสอบแยกจากกัน และช่วยให้คุณทดสอบแบบไม่โต้ตอบได้
สำหรับขั้นตอนการทดสอบอีเมลและรหัสผ่านแบบไม่โต้ตอบ ลำดับทั่วไปจะเป็นดังนี้
- สร้างผู้ใช้ด้วย จุดสิ้นสุดการลงทะเบียนการรับรองความถูกต้อง REST
- ลงชื่อเข้าใช้ผู้ใช้โดยใช้อีเมลและรหัสผ่านเพื่อทำการทดสอบ
- หากใช้ได้กับการทดสอบของคุณ ให้ดึงข้อมูลรหัสยืนยันอีเมลนอกแบนด์ที่มีอยู่จาก REST endpont เฉพาะของอีมูเลเตอร์
- ล้างข้อมูลผู้ใช้ด้วย จุดสิ้นสุด REST เฉพาะโปรแกรมจำลอง สำหรับการล้างข้อมูล
การตรวจสอบโทรศัพท์จำลอง/SMS
สำหรับการตรวจสอบสิทธิ์ทางโทรศัพท์ โปรแกรมจำลองการตรวจสอบสิทธิ์ไม่รองรับ:
- reCAPTCHA และกระแส APN เมื่อกำหนดค่าให้โต้ตอบกับโปรแกรมจำลองแล้ว SDK ของไคลเอ็นต์จะปิดใช้วิธีการตรวจสอบเหล่านี้ในลักษณะที่คล้ายกับที่อธิบายไว้สำหรับการทดสอบการผสานรวม ( iOS , Android , เว็บ )
- ทดสอบหมายเลขโทรศัพท์ด้วยรหัสที่กำหนดค่าล่วงหน้าในคอนโซล Firebase
มิฉะนั้น ในแง่ของรหัสไคลเอ็นต์ ขั้นตอนการตรวจสอบความถูกต้องของโทรศัพท์/SMS จะเหมือนกับที่อธิบายไว้สำหรับการผลิต ( iOS , Android , เว็บ )
การใช้ Emulator Suite UI:
- ใน Emulator Suite UI ให้คลิกแท็บ การรับรองความถูกต้อง
- คลิกปุ่ม เพิ่มผู้ใช้
- ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้ กรอกข้อมูลในฟิลด์การรับรองความถูกต้องของโทรศัพท์
อย่างไรก็ตาม สำหรับขั้นตอนการยืนยันตัวตนทางโทรศัพท์ ตัวจำลองจะไม่เรียกใช้การส่งข้อความใดๆ เนื่องจากการติดต่อผู้ให้บริการอยู่นอกขอบเขตและไม่เหมาะสำหรับการทดสอบในพื้นที่! ตัวจำลองจะพิมพ์รหัสที่จะส่งทาง SMS ไปยังเทอร์มินัลเดียวกับที่คุณเรียกใช้ firebase emulators:start
ป้อนรหัสนี้ไปยังแอปเพื่อจำลองผู้ใช้ตรวจสอบข้อความของพวกเขา
การทดสอบแบบไม่โต้ตอบ
สำหรับการทดสอบการยืนยันตัวตนทางโทรศัพท์แบบไม่โต้ตอบ ให้ใช้ REST API ของโปรแกรมจำลองการพิสูจน์ตัวตนเพื่อดึงรหัส SMS ที่ใช้ได้ โปรดทราบว่ารหัสจะแตกต่างกันทุกครั้งที่คุณเริ่มต้นโฟลว์
ลำดับทั่วไปมีดังนี้
- โทรหาแพลตฟอร์ม
signInWithPhoneNumber
เพื่อเริ่มกระบวนการยืนยัน - รับรหัสยืนยันโดยใช้ จุดสิ้นสุด REST เฉพาะโปรแกรมจำลอง
- โทร
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 จำลองสำหรับบัญชีแทนข้อมูลประจำตัวจริง
- ให้รางวัลหรือแสดงความคิดเห็นในส่วนของรหัสของคุณที่ดึง idTokens จาก IDP สิ่งนี้ทำให้ไม่จำเป็นต้องป้อนชื่อผู้ใช้และรหัสผ่านจริงระหว่างการทดสอบของคุณ และลดการทดสอบของคุณจากโควต้า API และการจำกัดอัตราที่ IDP
- ประการที่สอง ใช้สตริง 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