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