ก่อนที่จะใช้โปรแกรมจำลองการตรวจสอบสิทธิ์กับแอป โปรดตรวจสอบว่าคุณเข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite รวมถึงได้ติดตั้งและกำหนดค่า Local Emulator Suite และตรวจสอบคำสั่ง CLI แล้ว
หัวข้อนี้จะถือว่าคุณคุ้นเคยกับการพัฒนาโซลูชันการตรวจสอบสิทธิ์ Firebase สำหรับการใช้งานจริงอยู่แล้ว หากจำเป็น โปรดอ่านเอกสารเกี่ยวกับชุดค่าผสมของแพลตฟอร์มและเทคนิคการตรวจสอบสิทธิ์
ฉันใช้ตัวจำลองการตรวจสอบสิทธิ์ทำอะไรได้บ้าง
โปรแกรมจำลองการตรวจสอบสิทธิ์มอบการจำลองภายในที่มีความแม่นยำสูงของบริการการตรวจสอบสิทธิ์ Firebase ซึ่งมีฟังก์ชันส่วนใหญ่ที่พบในการตรวจสอบสิทธิ์ Firebase เวอร์ชันที่ใช้งานจริง เมื่อใช้ร่วมกับแพลตฟอร์มของ Apple, Android และ Firebase SDK บนเว็บ โปรแกรมจำลองช่วยให้คุณทำสิ่งต่อไปนี้ได้
- สร้าง อัปเดต และจัดการบัญชีผู้ใช้จำลองสำหรับการทดสอบอีเมล/รหัสผ่าน, หมายเลขโทรศัพท์/SMS, SMS แบบหลายปัจจัย และการตรวจสอบสิทธิ์ผู้ให้บริการข้อมูลประจำตัวบุคคลที่สาม (เช่น Google)
- ดูและแก้ไขผู้ใช้ที่จำลอง
- สร้างต้นแบบระบบการตรวจสอบสิทธิ์โทเค็นที่กำหนดเอง
- ตรวจสอบข้อความที่เกี่ยวข้องกับการตรวจสอบสิทธิ์ในแท็บบันทึก UI โปรแกรมจำลอง
เลือกโปรเจ็กต์ Firebase
Firebase Local Emulator Suite จะจำลองผลิตภัณฑ์สำหรับโปรเจ็กต์ Firebase โปรเจ็กต์เดียว
หากต้องการเลือกโปรเจ็กต์ที่จะใช้ ก่อนที่คุณจะเริ่มโปรแกรมจำลอง ในการเรียกใช้ CLI
firebase use
ในไดเรกทอรีการทำงาน หรือจะส่งธง --project
ไปยังคำสั่งโปรแกรมจำลองแต่ละคำสั่งก็ได้
ชุดโปรแกรมจำลองภายในรองรับการจำลองโปรเจ็กต์ Firebase จริงและโปรเจ็กต์สาธิต
ประเภทโปรเจ็กต์ | ฟีเจอร์ | ใช้กับโปรแกรมจำลอง |
---|---|---|
จริง |
โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (ส่วนใหญ่จะผ่านคอนโซล Firebase) โปรเจ็กต์จริงจะมีทรัพยากรที่เผยแพร่อยู่ เช่น อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูลของพื้นที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นๆ ที่คุณตั้งค่าไว้สำหรับโปรเจ็กต์ Firebase นั้น |
เมื่อทำงานกับโปรเจ็กต์ Firebase จริง คุณจะเรียกใช้โปรแกรมจำลองสำหรับผลิตภัณฑ์ที่รองรับบางรายการหรือทั้งหมดก็ได้ สำหรับผลิตภัณฑ์ที่คุณไม่ได้จำลอง แอปและโค้ดจะโต้ตอบกับทรัพยากรที่เผยแพร่อยู่ (อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูลของพื้นที่เก็บข้อมูล ฟังก์ชัน ฯลฯ) |
เดโม |
โปรเจ็กต์สาธิต Firebase ไม่มีการกำหนดค่า Firebase จริง และไม่มีทรัพยากรที่เผยแพร่อยู่ โดยปกติแล้วโปรเจ็กต์เหล่านี้จะเข้าถึงได้ผ่าน Codelab หรือบทแนะนำอื่นๆ รหัสโปรเจ็กต์สำหรับโปรเจ็กต์สาธิตจะมี |
เมื่อทำงานกับโปรเจ็กต์ Firebase สาธิต แอปและโค้ดจะโต้ตอบกับโปรแกรมจำลองเท่านั้น หากแอปพยายามโต้ตอบกับทรัพยากรที่โปรแกรมจำลองไม่ได้ทำงานอยู่ โค้ดนั้นจะล้มเหลว |
เราขอแนะนำให้คุณใช้โปรเจ็กต์เดโมเมื่อเป็นไปได้ สิทธิประโยชน์มีดังนี้
- ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase
- ความปลอดภัยที่แข็งแกร่งขึ้นคือ หากโค้ดของคุณเรียกใช้ทรัพยากรที่ไม่ได้จำลอง (เวอร์ชันที่ใช้งานจริง) โดยไม่ตั้งใจ การเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงินจะไม่เกิดขึ้น
- รองรับการใช้งานแบบออฟไลน์ได้ดีกว่า เนื่องจากไม่จำเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกำหนดค่า SDK
ใช้เครื่องดนตรีกับแอปเพื่อพูดคุยกับโปรแกรมจำลอง
SDK สำหรับ Android, iOS และเว็บ
ให้ตั้งค่าการกำหนดค่าในแอปหรือทดสอบคลาสเพื่อโต้ตอบกับโปรแกรมจำลองการตรวจสอบสิทธิ์ดังนี้
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");
โดยไม่จำเป็นต้องมีการตั้งค่าเพิ่มเติมเพื่อสร้างต้นแบบและทดสอบการโต้ตอบระหว่างการตรวจสอบสิทธิ์กับ Cloud Functions หรือกฎความปลอดภัยของ Firebase สำหรับ Cloud Firestore หรือ Realtime Database เมื่อมีการกำหนดค่าโปรแกรมจำลองการตรวจสอบสิทธิ์และโปรแกรมจำลองอื่นๆ ทำงานอยู่ โปรแกรมเหล่านี้จะทำงานร่วมกันโดยอัตโนมัติ
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 จะยอมรับโทเค็นรหัสที่ไม่ได้ลงชื่อและคุกกี้เซสชันซึ่งออกโดยตัวจำลองการตรวจสอบสิทธิ์ (ผ่านเมธอด 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"
โทเค็นรหัส
ด้วยเหตุผลด้านความปลอดภัย โปรแกรมจำลองการตรวจสอบสิทธิ์จะออกโทเค็นรหัสที่ไม่ได้ลงชื่อ ซึ่งจะยอมรับโดยโปรแกรมจำลอง Firebase อื่นๆ หรือ Firebase Admin SDK เมื่อกำหนดค่าเท่านั้น บริการ Firebase เวอร์ชันที่ใช้งานจริงหรือ Firebase Admin SDK ที่ทำงานในโหมดที่ใช้งานจริงจะปฏิเสธโทเค็นเหล่านี้ (เช่น ลักษณะการทำงานเริ่มต้นที่ไม่มีขั้นตอนการตั้งค่าตามที่อธิบายไว้ข้างต้น)
เริ่มโปรแกรมจำลอง
คุณสามารถใช้โปรแกรมจำลองการตรวจสอบสิทธิ์แบบอินเทอร์แอกทีฟผ่าน UI ชุดโปรแกรมจำลอง และไม่มีการโต้ตอบผ่านอินเทอร์เฟซ REST ภายในเครื่อง ส่วนต่อไปนี้ครอบคลุมกรณีการใช้งานแบบอินเทอร์แอกทีฟและไม่ใช่แบบอินเทอร์แอกทีฟ
ในการเริ่มต้นโปรแกรมจำลองการตรวจสอบสิทธิ์ อินเทอร์เฟซ REST และ UI ของชุดโปรแกรมจำลอง ให้เรียกใช้คำสั่งต่อไปนี้
firebase emulators:start
อีเมลจำลอง ลิงก์อีเมล และการตรวจสอบสิทธิ์แบบไม่ระบุชื่อ
สำหรับการตรวจสอบสิทธิ์แบบไม่ระบุตัวตน แอปสามารถใช้ตรรกะการลงชื่อเข้าใช้สำหรับแพลตฟอร์มของคุณ (iOS, Android, เว็บ)
สำหรับการตรวจสอบสิทธิ์อีเมล/รหัสผ่าน คุณจะเริ่มการสร้างต้นแบบได้โดยการเพิ่มบัญชีผู้ใช้ลงในตัวจำลองการตรวจสอบสิทธิ์จากแอปโดยใช้เมธอด SDK การตรวจสอบสิทธิ์ หรือใช้ UI ของชุดโปรแกรมจำลอง
- คลิกแท็บการตรวจสอบสิทธิ์ใน 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 ที่คล้ายกัน ซึ่งรวมถึงพารามิเตอร์ newPassword (ซึ่งคุณจะเปลี่ยนได้ตามความจำเป็น) ไปยังเทอร์มินัล
http://127.0.0.1:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD
การทดสอบแบบไม่โต้ตอบ
คุณสามารถเขียนสคริปต์การตั้งค่าการทดสอบที่เรียกใช้ REST API เพื่อสร้างและลบบัญชีผู้ใช้ รวมถึงดึงรหัสยืนยันอีเมลนอกขอบเขตเพื่อเติมข้อมูล URL การยืนยันอีเมลของโปรแกรมจำลอง แทนที่จะใช้ UI ชุดโปรแกรมจำลองหรือรหัสไคลเอ็นต์เพื่อจัดการบัญชีผู้ใช้อีเมล/รหัสผ่าน ซึ่งจะแยกแพลตฟอร์มและโค้ดทดสอบออกจากกัน และให้คุณทดสอบแบบไม่โต้ตอบได้
สำหรับขั้นตอนการทดสอบอีเมลและรหัสผ่านแบบไม่โต้ตอบ ลำดับโดยทั่วไปจะเป็นดังนี้
- สร้างผู้ใช้ที่มีปลายทาง REST ของ SigningUp สำหรับการตรวจสอบสิทธิ์
- ให้ผู้ใช้ลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านเพื่อทำการทดสอบ
- ดึงข้อมูลรหัสยืนยันอีเมลแบบนอกขอบเขตที่มีให้ใช้งานจากปลายทาง REST เฉพาะโปรแกรมจำลอง หากเกี่ยวข้องกับการทดสอบของคุณ
- ล้างบันทึกผู้ใช้ด้วยปลายทาง REST เฉพาะโปรแกรมจำลองเพื่อล้างข้อมูล
การจำลองการตรวจสอบสิทธิ์ทางโทรศัพท์/SMS
โปรแกรมจำลองการตรวจสอบสิทธิ์ไม่รองรับการตรวจสอบสิทธิ์ทางโทรศัพท์ดังต่อไปนี้
- ขั้นตอน reCAPTCHA และ APN เมื่อกําหนดค่าให้โต้ตอบกับโปรแกรมจําลองแล้ว SDK ของไคลเอ็นต์จะปิดใช้วิธีการยืนยันเหล่านี้ในลักษณะเดียวกับที่อธิบายไว้สําหรับการทดสอบการผสานรวม (iOS, Android, เว็บ)
- ทดสอบหมายเลขโทรศัพท์ด้วยรหัสที่กำหนดค่าไว้ล่วงหน้าในคอนโซล Firebase
มิเช่นนั้น ในแง่ของโค้ดไคลเอ็นต์ ขั้นตอนการตรวจสอบสิทธิ์โทรศัพท์/SMS จะเหมือนกับที่อธิบายสำหรับเวอร์ชันที่ใช้งานจริง (iOS, Android, เว็บ)
การใช้ UI ของชุดโปรแกรมจำลอง
- คลิกแท็บการตรวจสอบสิทธิ์ใน UI ของชุดโปรแกรมจำลอง
- คลิกปุ่มเพิ่มผู้ใช้
- ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้ โดยกรอกช่องการตรวจสอบสิทธิ์ของโทรศัพท์
อย่างไรก็ตาม สำหรับขั้นตอนการตรวจสอบสิทธิ์ทางโทรศัพท์ โปรแกรมจำลองจะไม่ทริกเกอร์การส่งข้อความใดๆ เนื่องจากการติดต่อผู้ให้บริการอยู่นอกขอบเขตและไม่เหมาะกับการทดสอบในเครื่อง แต่โปรแกรมจำลองจะพิมพ์รหัสที่ส่งผ่าน SMS ไปยังเทอร์มินัลเดียวกับที่คุณเรียกใช้ firebase emulators:start
แทน ป้อนรหัสนี้ลงในแอปเพื่อจำลองให้ผู้ใช้ตรวจสอบ SMS
การทดสอบแบบไม่โต้ตอบ
สำหรับการทดสอบการตรวจสอบสิทธิ์ทางโทรศัพท์แบบไม่โต้ตอบ ให้ใช้โปรแกรมจำลองการตรวจสอบสิทธิ์ API ของ REST เพื่อเรียกรหัส SMS ที่ใช้ได้ โปรดทราบว่าโค้ดจะแตกต่างกันไป ทุกครั้งที่คุณเริ่มขั้นตอน
ลำดับโดยทั่วไปมีดังนี้
- โทรหาแพลตฟอร์ม
signInWithPhoneNumber
เพื่อเริ่มกระบวนการยืนยัน - ดึงรหัสยืนยันโดยใช้ปลายทาง REST เฉพาะโปรแกรมจำลอง
- โทร
confirmationResult.confirm(code)
ตามปกติเพื่อแจ้งรหัสยืนยัน
SMS แบบหลายปัจจัย
โปรแกรมจำลองการตรวจสอบสิทธิ์รองรับการสร้างต้นแบบและทดสอบขั้นตอนการตรวจสอบสิทธิ์แบบหลายปัจจัยทาง SMS (MFA) ซึ่งมีอยู่ในเวอร์ชันที่ใช้งานจริงสำหรับ iOS, Android และเว็บ
เมื่อเพิ่มผู้ใช้จำลองลงในโปรแกรมจำลอง คุณจะเปิดใช้ MFA และกำหนดค่าหมายเลขโทรศัพท์อย่างน้อย 1 หมายเลขที่จะใช้ส่งข้อความ SMS จากปัจจัยที่สองได้ ข้อความจะแสดงไปยังเทอร์มินัลเดียวกับที่คุณเรียกใช้ firebase emulators:start
และพร้อมใช้งานจากอินเทอร์เฟซ REST
การตรวจสอบสิทธิ์ของผู้ให้บริการข้อมูลประจำตัวบุคคลที่สาม (IDP) ที่จำลองขึ้น
โปรแกรมจำลองการตรวจสอบสิทธิ์ช่วยให้คุณสามารถทดสอบขั้นตอนการตรวจสอบสิทธิ์ของบุคคลที่สามจำนวนมากใน iOS, Android หรือเว็บแอป โดยไม่ต้องเปลี่ยนแปลงโค้ดเวอร์ชันที่ใช้งานจริง ดูตัวอย่างขั้นตอนการตรวจสอบสิทธิ์ได้ในเอกสารประกอบเกี่ยวกับชุดค่าผสมผู้ให้บริการและแพลตฟอร์มต่างๆ ที่คุณใช้ในแอปได้
โดยทั่วไปแล้ว คุณสามารถใช้ Firebase SDK เพื่อตรวจสอบสิทธิ์ได้ 2 วิธีดังนี้
- แอปของคุณให้ SDK จัดการกระบวนการทั้งหมดได้จากต้นทางถึงปลายทาง ซึ่งรวมถึงการโต้ตอบทั้งหมดกับผู้ให้บริการ IdP บุคคลที่สามเพื่อดึงข้อมูลเข้าสู่ระบบ
- แอปของคุณดึงข้อมูลเข้าสู่ระบบจากผู้ให้บริการบุคคลที่สามด้วยตนเองโดยใช้ SDK ของบุคคลที่สามและส่งผ่านข้อมูลเข้าสู่ระบบเหล่านั้นไปยัง SDK การตรวจสอบสิทธิ์
ขอย้ำอีกครั้งว่าตรวจสอบลิงก์เอกสารด้านบนและตรวจสอบว่าคุณคุ้นเคยกับขั้นตอนใดก็ตามที่คุณต้องการใช้งาน ไม่ว่าจะเป็นการจัดการข้อมูลเข้าสู่ระบบที่จัดการโดย SDK SDK หรือ Firebase ตัวจำลองการตรวจสอบสิทธิ์รองรับการทดสอบทั้งสองวิธี
การทดสอบขั้นตอน IdP ที่ขับเคลื่อนด้วย Firebase SDK
หากแอปใช้ขั้นตอนจากต้นทางถึงปลายทางใน Firebase SDK เช่น OAuthProvider
สำหรับการลงชื่อเข้าใช้ด้วย Microsoft, GitHub หรือ Yahoo สำหรับการทดสอบแบบอินเทอร์แอกทีฟ โปรแกรมจำลองการตรวจสอบสิทธิ์จะแสดงหน้าลงชื่อเข้าใช้ที่เกี่ยวข้องในเวอร์ชันในเครื่องเพื่อช่วยคุณทดสอบการตรวจสอบสิทธิ์จากเว็บแอปที่เรียกเมธอด signinWithPopup
หรือ signInWithRedirect
หน้าลงชื่อเข้าใช้ที่แสดงในเครื่องนี้จะปรากฏในแอปบนอุปกรณ์เคลื่อนที่ซึ่งแสดงผลโดยไลบรารี WebView ของแพลตฟอร์มด้วย
โปรแกรมจำลองจะจำลองบัญชีผู้ใช้และข้อมูลเข้าสู่ระบบของบุคคลที่สามตามที่จำเป็นในขณะที่ดำเนินการต่อไป
การทดสอบโฟลว์ IdP ด้วยการดึงข้อมูลเข้าสู่ระบบด้วยตนเอง
หากคุณใช้เทคนิคการลงชื่อเข้าใช้แบบ "ด้วยตนเอง" และเรียกใช้เมธอด signInWithCredentials
ของแพลตฟอร์ม แอปจะขอการลงชื่อเข้าใช้จริงของบุคคลที่สามและดึงข้อมูลเข้าสู่ระบบจริงของบุคคลที่สามตามปกติ
โปรดทราบว่าโปรแกรมจําลองรองรับเฉพาะการตรวจสอบสิทธิ์ signInWithCredential
สําหรับข้อมูลเข้าสู่ระบบที่ดึงจาก Google Sign-In, Apple และผู้ให้บริการอื่นๆ ที่ใช้โทเค็นรหัสที่ใช้เป็น JSON Web Token (JWT) เท่านั้น ระบบไม่รองรับโทเค็นเพื่อการเข้าถึง (เช่น โทเค็นที่ Facebook หรือ Twitter ซึ่งไม่ใช่ JWT) ส่วนถัดไปจะกล่าวถึงทางเลือกอื่นในกรณีเหล่านี้
การทดสอบแบบไม่โต้ตอบ
วิธีหนึ่งในการทดสอบแบบไม่โต้ตอบคือการทำให้คลิกของผู้ใช้ในหน้าลงชื่อเข้าใช้ที่แสดงโดยโปรแกรมจำลองโดยอัตโนมัติ สำหรับเว็บแอป ให้ใช้อินเทอร์เฟซการควบคุมอย่างเช่น WebDriver สำหรับอุปกรณ์เคลื่อนที่ ให้ใช้เครื่องมือทดสอบ UI จากแพลตฟอร์มของคุณ เช่น Espresso หรือ Xcode
หรือคุณอาจอัปเดตโค้ดเพื่อใช้ signInWithCredential
(เช่น ใน Branch ของโค้ด) และใช้ขั้นตอนการตรวจสอบสิทธิ์โทเค็นที่มีโทเค็นจำลองรหัสสําหรับบัญชีแทนข้อมูลเข้าสู่ระบบจริง
- เปลี่ยนเส้นทางหรือแสดงความคิดเห็นเกี่ยวกับส่วนของโค้ดที่ดึง idTokens จาก IdP ทำให้ไม่จำเป็นต้องป้อนชื่อผู้ใช้และรหัสผ่านจริงระหว่างการทดสอบ และลดขั้นตอนการทดสอบจากโควต้า API และขีดจำกัดอัตราคำขอที่ IdP
- ขั้นตอนที่ 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')
หรือรหัสผู้ให้บริการอื่นที่ต้องการจำลองก็ได้
การจำลองการตรวจสอบสิทธิ์โทเค็นที่กำหนดเอง
ตัวจำลองการตรวจสอบสิทธิ์จะจัดการการตรวจสอบสิทธิ์ด้วยโทเค็นเว็บ JSON ที่กำหนดเองโดยใช้การเรียกเมธอด signInWithCustomToken
บนแพลตฟอร์มที่รองรับ ตามที่อธิบายไว้ในเอกสารการตรวจสอบสิทธิ์เวอร์ชันที่ใช้งานจริง
โปรแกรมจำลองการตรวจสอบสิทธิ์แตกต่างจากเวอร์ชันที่ใช้งานจริงอย่างไร
โปรแกรมจำลองการตรวจสอบสิทธิ์ Firebase จะจำลองฟีเจอร์มากมายของผลิตภัณฑ์ที่ใช้งานจริง แต่เนื่องจากระบบการตรวจสอบสิทธิ์ทุกรูปแบบอาศัยการรักษาความปลอดภัยเป็นอย่างมากในหลายระดับ (อุปกรณ์, ผู้ให้บริการบุคคลที่สาม, Firebase ฯลฯ) โปรแกรมจำลองจึงสร้างขั้นตอนทั้งหมดใหม่อย่างถูกต้องได้ยาก
Cloud IAM
ชุดโปรแกรมจำลอง Firebase จะไม่พยายามจำลองหรือทำตามลักษณะการทำงานที่เกี่ยวข้องกับ IAM สำหรับการเรียกใช้ โปรแกรมจำลองปฏิบัติตามกฎการรักษาความปลอดภัยของ Firebase ที่ให้ไว้ แต่ในสถานการณ์ที่ปกติแล้วจะใช้ IAM เช่น เพื่อตั้งค่าการเรียกใช้บัญชีบริการ Cloud Functions และด้วยเหตุดังกล่าว โปรแกรมจำลองจะกำหนดค่าไม่ได้และจะใช้บัญชีที่พร้อมใช้งานทั่วโลกในเครื่องของนักพัฒนาซอฟต์แวร์ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
ลงชื่อเข้าใช้ผ่านลิงก์อีเมลบนอุปกรณ์เคลื่อนที่
เนื่องจากในแพลตฟอร์มอุปกรณ์เคลื่อนที่ การลงชื่อเข้าใช้ลิงก์อีเมลจะใช้ลิงก์แบบไดนามิกของ Firebase ลิงก์ดังกล่าวทั้งหมดจะเปิดบนแพลตฟอร์มเว็บ (อุปกรณ์เคลื่อนที่) แทน
การลงชื่อเข้าใช้ของบุคคลที่สาม
สำหรับขั้นตอนการลงชื่อเข้าใช้ของบุคคลที่สาม การตรวจสอบสิทธิ์ Firebase จะใช้ข้อมูลเข้าสู่ระบบที่ปลอดภัยจากผู้ให้บริการบุคคลที่สาม เช่น Twitter และ GitHub
โปรแกรมจำลองการตรวจสอบสิทธิ์จะยอมรับข้อมูลรับรองจริงจากผู้ให้บริการ OpenID Connect เช่น Google และ Apple ระบบไม่รองรับข้อมูลเข้าสู่ระบบจากผู้ให้บริการที่ไม่ใช่ OpenID Connect
การลงชื่อเข้าใช้ด้วยอีเมล / SMS
ในแอปเวอร์ชันที่ใช้งานจริง ขั้นตอนการลงชื่อเข้าใช้อีเมลและ SMS จะเกี่ยวข้องกับการดำเนินการ แบบไม่พร้อมกัน ซึ่งผู้ใช้จะตรวจสอบข้อความที่ได้รับและป้อนรหัสการเข้าสู่ระบบลงในอินเทอร์เฟซการลงชื่อเข้าใช้ ตัวจำลองการตรวจสอบสิทธิ์จะไม่ส่งอีเมลหรือข้อความ SMS แต่ตามที่อธิบายไว้ด้านบน โดยจะสร้างรหัสการเข้าสู่ระบบและเอาต์พุตไปยังเทอร์มินัลเพื่อใช้ในการทดสอบ
โปรแกรมจำลองไม่รองรับความสามารถในการกำหนดหมายเลขโทรศัพท์ทดสอบด้วยรหัสการเข้าสู่ระบบแบบคงที่ ซึ่งทำได้โดยใช้คอนโซล Firebase
การตรวจสอบสิทธิ์โทเค็นที่กำหนดเอง
โปรแกรมจำลองการตรวจสอบสิทธิ์จะไม่ตรวจสอบลายเซ็นหรือการหมดอายุของโทเค็นที่กำหนดเอง ซึ่งช่วยให้คุณใช้โทเค็นที่สร้างขึ้นด้วยมือและใช้โทเค็นซ้ำได้เรื่อยๆ ในการสร้างต้นแบบและทดสอบสถานการณ์
การจำกัดอัตรา / ป้องกันการละเมิด
โปรแกรมจำลองการตรวจสอบสิทธิ์จะไม่จำลองฟีเจอร์การจำกัดอัตราการใช้งานจริงหรือป้องกันการละเมิดซ้ำ
ฟังก์ชันการบล็อก
ในเวอร์ชันที่ใช้งานจริง ระบบจะเขียนผู้ใช้ไปยังพื้นที่เก็บข้อมูล 1 ครั้งหลังจากทริกเกอร์ทั้งเหตุการณ์ beforeCreate
และ beforeSignIn
แต่เนื่องด้วยข้อจำกัดทางเทคนิค โปรแกรมจำลองการตรวจสอบสิทธิ์จะเขียนเพื่อจัดเก็บ 2 ครั้ง โดยครั้งหนึ่งหลังการสร้างผู้ใช้ และอีกรายการหนึ่งหลังจากลงชื่อเข้าใช้ ซึ่งหมายความว่าสำหรับผู้ใช้ใหม่ คุณสามารถเรียกใช้ getAuth().getUser()
ใน beforeSignIn
ในโปรแกรมจำลองการตรวจสอบสิทธิ์ได้สำเร็จ แต่จะพบข้อผิดพลาดในการดำเนินการดังกล่าว
ฉันควรทำอย่างไรต่อไป
หากต้องการดูชุดวิดีโอที่มีการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตามเพลย์ลิสต์การฝึกของ Firebase Emulators
เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมกับการตรวจสอบสิทธิ์โดยทั่วไป โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับตัวจำลอง Cloud Functions for Firebase ที่เรียกใช้ฟังก์ชันในเครื่อง