ก่อนใช้โปรแกรมจำลอง Authentication กับแอป โปรดตรวจสอบว่าคุณเข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite และติดตั้งและกำหนดค่า Local Emulator Suite รวมถึงตรวจสอบคำสั่ง CLI แล้ว
หัวข้อนี้ถือว่าคุณคุ้นเคยกับการพัฒนาโซลูชัน Firebase Authentication สำหรับการใช้งานจริงอยู่แล้ว หากจำเป็น โปรดอ่านเอกสารประกอบสำหรับการผสมผสานแพลตฟอร์มและเทคนิคการตรวจสอบสิทธิ์
ฉันใช้โปรแกรมจำลอง Authentication ทำอะไรได้บ้าง
โปรแกรมจำลอง Authentication มีการจำลองบริการ Firebase Authentication ในเครื่องที่มีความแม่นยำสูง โดยมีฟังก์ชันการทำงานส่วนใหญ่ที่พบใน เวอร์ชันที่ใช้งานจริง Firebase Authentication เมื่อใช้ร่วมกับแพลตฟอร์ม Apple, Android และ 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 จริงและไม่มีทรัพยากรที่ใช้งานอยู่ โดยปกติแล้วโปรเจ็กต์เหล่านี้จะเข้าถึงผ่าน Codelab หรือบทแนะนำอื่นๆ รหัสโปรเจ็กต์สำหรับโปรเจ็กต์เดโมจะมีคำนำหน้า |
เมื่อทำงานกับโปรเจ็กต์ Firebase สาธิต แอปและโค้ดของคุณจะโต้ตอบกับโปรแกรมจำลองเท่านั้น หากแอปพยายามโต้ตอบกับทรัพยากรที่โปรแกรมจำลองไม่ได้ทำงานอยู่ โค้ดนั้นจะทำงานไม่สำเร็จ |
เราขอแนะนำให้คุณใช้โปรเจ็กต์เดโมเมื่อใดก็ตามที่เป็นไปได้ สิทธิประโยชน์มีดังนี้
- ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase
- ความปลอดภัยที่เข้มงวดขึ้น เนื่องจากหากโค้ดเรียกใช้ทรัพยากรที่ไม่ได้จำลอง (เวอร์ชันที่ใช้งานจริง) โดยไม่ตั้งใจ จะไม่มีโอกาสเกิดการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
- การรองรับการใช้งานออฟไลน์ที่ดีขึ้น เนื่องจากไม่จำเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกำหนดค่า SDK
ใช้เครื่องมือวัดแอปเพื่อสื่อสารกับโปรแกรมจำลอง
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 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
Node.js Admin SDK
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 ในเครื่องได้ ส่วนต่อไปนี้จะครอบคลุมกรณีการใช้งานแบบอินเทอร์แอกทีฟและแบบไม่อินเทอร์แอกทีฟ
หากต้องการเริ่มโปรแกรมจำลอง Authentication, อินเทอร์เฟซ REST และ Emulator Suite UI ให้เรียกใช้คำสั่งต่อไปนี้
firebase emulators:start
การตรวจสอบสิทธิ์อีเมลจำลอง ลิงก์อีเมล และการตรวจสอบสิทธิ์แบบไม่ระบุตัวตน
สำหรับการตรวจสอบสิทธิ์แบบไม่ระบุชื่อ แอปของคุณสามารถใช้ตรรกะการลงชื่อเข้าใช้สำหรับแพลตฟอร์มของคุณ (iOS, Android, เว็บ)
สำหรับการตรวจสอบสิทธิ์ด้วยอีเมล/รหัสผ่าน คุณสามารถเริ่มสร้างต้นแบบได้โดยเพิ่มบัญชีผู้ใช้ลงในโปรแกรมจำลอง Authentication จากแอปโดยใช้เมธอด SDK ของ Authentication หรือใช้ Emulator Suite UI
- ใน Emulator Suite UI ให้คลิกแท็บ Authentication
- คลิกปุ่มเพิ่มผู้ใช้
- ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้ โดยกรอกข้อมูลในช่องการตรวจสอบสิทธิ์อีเมล
เมื่อสร้างผู้ใช้ทดสอบแล้ว แอปของคุณจะลงชื่อเข้าใช้และออกจากระบบของผู้ใช้ด้วยตรรกะ 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 การยืนยันอีเมลของโปรแกรมจำลอง วิธีนี้จะแยกโค้ดแพลตฟอร์มและโค้ดทดสอบออกจากกัน และช่วยให้คุณทดสอบแบบไม่โต้ตอบได้
สำหรับขั้นตอนการทดสอบอีเมลและรหัสผ่านแบบไม่โต้ตอบ ลำดับทั่วไปจะเป็นดังนี้
- สร้างผู้ใช้ด้วยAuthenticationปลายทาง REST ของ signUp
- ลงชื่อเข้าใช้ผู้ใช้โดยใช้อีเมลและรหัสผ่านเพื่อทำการทดสอบ
- หากเกี่ยวข้องกับการทดสอบ ให้ดึงข้อมูลรหัสการยืนยันอีเมลนอกแบนด์ที่พร้อมใช้งานจากปลายทาง REST เฉพาะโปรแกรมจำลอง
- ล้างบันทึกผู้ใช้ด้วยปลายทาง REST เฉพาะโปรแกรมจำลองเพื่อล้างข้อมูล
การตรวจสอบสิทธิ์ทางโทรศัพท์/SMS ที่จำลองขึ้น
สำหรับการตรวจสอบสิทธิ์ทางโทรศัพท์ โปรแกรมจำลองการตรวจสอบสิทธิ์ไม่รองรับสิ่งต่อไปนี้
- ขั้นตอน reCAPTCHA และ APN เมื่อกำหนดค่าให้โต้ตอบกับโปรแกรมจำลองแล้ว SDK ของไคลเอ็นต์จะปิดใช้วิธีการยืนยันเหล่านี้ในลักษณะที่คล้ายกับที่อธิบายไว้สำหรับการทดสอบการผสานรวม (iOS, Android, เว็บ)
- ทดสอบหมายเลขโทรศัพท์ด้วยรหัสที่กำหนดค่าไว้ล่วงหน้าในคอนโซล Firebase
มิฉะนั้น ในแง่ของโค้ดไคลเอ็นต์ ขั้นตอนการตรวจสอบสิทธิ์ทางโทรศัพท์/SMS จะเหมือนกับที่อธิบายไว้สำหรับเวอร์ชันที่ใช้งานจริง (iOS, Android, เว็บ)
การใช้ Emulator Suite UI
- ใน Emulator Suite UI ให้คลิกแท็บ Authentication
- คลิกปุ่มเพิ่มผู้ใช้
- ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้ โดยกรอกข้อมูลในช่องการตรวจสอบสิทธิ์ทางโทรศัพท์
อย่างไรก็ตาม สำหรับขั้นตอนการตรวจสอบสิทธิ์ทางโทรศัพท์ โปรแกรมจำลองจะไม่ทริกเกอร์การส่งข้อความใดๆ เนื่องจากอยู่นอกขอบเขตการติดต่อผู้ให้บริการและไม่เหมาะสำหรับการทดสอบในเครื่อง แต่โปรแกรมจำลองจะพิมพ์รหัสที่ควรจะส่งผ่าน SMS ไปยังเทอร์มินัลเดียวกันกับที่คุณเรียกใช้ firebase emulators:start แทน ให้ป้อนรหัสนี้ลงในแอปเพื่อจำลองผู้ใช้ที่ตรวจสอบข้อความของตนเอง
การทดสอบแบบไม่โต้ตอบ
สำหรับการทดสอบการตรวจสอบสิทธิ์ทางโทรศัพท์แบบไม่โต้ตอบ ให้ใช้ REST API ของโปรแกรมจำลอง Authentication เพื่อดึงรหัส SMS ที่ใช้ได้ โปรดทราบว่ารหัสจะแตกต่างกันทุกครั้งที่คุณเริ่มขั้นตอน
โดยทั่วไปแล้ว ลำดับจะเป็นดังนี้
- โทรหาแพลตฟอร์ม
signInWithPhoneNumberเพื่อเริ่มกระบวนการยืนยันตัวตน - ดึงรหัสยืนยันโดยใช้ปลายทาง REST เฉพาะโปรแกรมจำลอง
- โทรหา
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 ของบุคคลที่สามนั้น และส่งข้อมูลเข้าสู่ระบบเหล่านั้นไปยัง 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 (เช่น ในชิ้นส่วนโค้ด) และใช้ขั้นตอนการตรวจสอบสิทธิ์โทเค็นที่มีโทเค็นระบุตัวตนจำลองสำหรับบัญชีแทนข้อมูลเข้าสู่ระบบจริงก็ได้
- เดินสายใหม่หรือทำเครื่องหมายเป็นความคิดเห็นในส่วนของโค้ดที่ดึงข้อมูล 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 ได้สำเร็จ ให้คิดว่าช่องย่อยเป็นคีย์หลัก ซึ่งสามารถเปลี่ยนเป็นสตริงใดก็ได้ โดยจำลองการลงชื่อเข้าใช้ของผู้ใช้ที่แตกต่างกัน คุณสามารถแทนที่ firebase.auth.GoogleAuthProvider ด้วย new firebase.auth.OAuthProvider('yahoo.com') หรือรหัสผู้ให้บริการอื่นๆ ที่ต้องการจำลองได้
การตรวจสอบสิทธิ์โทเค็นที่กำหนดเองที่จำลองขึ้น
โปรแกรมจำลอง Authentication จะจัดการการตรวจสอบสิทธิ์ด้วยโทเค็นเว็บ JSON ที่กำหนดเองโดยใช้การเรียกใช้เมธอด signInWithCustomToken ในแพลตฟอร์มที่รองรับ ตามที่อธิบายไว้ในเอกสารประกอบเวอร์ชันที่ใช้งานจริงของ Authentication
ความแตกต่างระหว่างโปรแกรมจำลอง Authentication กับเวอร์ชันที่ใช้งานจริง
โปรแกรมจำลอง Authentication ของ Firebase จะจำลองฟีเจอร์หลายอย่างของผลิตภัณฑ์เวอร์ชันที่ใช้งานจริง อย่างไรก็ตาม เนื่องจากระบบการตรวจสอบสิทธิ์ทุกประเภทต้องอาศัยความปลอดภัยในหลายระดับ (อุปกรณ์, ผู้ให้บริการบุคคลที่สาม, Firebase ฯลฯ) จึงเป็นเรื่องยากที่โปรแกรมจำลองจะสร้างขั้นตอนทั้งหมดขึ้นมาใหม่ได้อย่างเหมาะสม
Cloud IAM
Firebase Emulator Suite ไม่พยายามจำลองหรือปฏิบัติตามพฤติกรรมที่เกี่ยวข้องกับ IAM สำหรับการเรียกใช้ โปรแกรมจำลองจะปฏิบัติตามกฎความปลอดภัยของ Firebase ที่ระบุไว้ แต่ในสถานการณ์ที่ปกติจะใช้ IAM เช่น เพื่อตั้งค่าบัญชีบริการที่เรียกใช้ Cloud Functions และสิทธิ์ โปรแกรมจำลองจะกำหนดค่าไม่ได้และจะใช้บัญชีที่ใช้ได้ทั่วโลกในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์ของคุณ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
ลงชื่อเข้าใช้ผ่านลิงก์ในอีเมลบนอุปกรณ์เคลื่อนที่
เนื่องจากในแพลตฟอร์มอุปกรณ์เคลื่อนที่ การลงชื่อเข้าใช้ด้วยลิงก์อีเมลจะอาศัยลิงก์แบบไดนามิกของ Firebase ลิงก์ทั้งหมดดังกล่าวจึงจะเปิดในแพลตฟอร์มเว็บบนอุปกรณ์เคลื่อนที่แทน
การลงชื่อเข้าใช้ของบุคคลที่สาม
สำหรับขั้นตอนการลงชื่อเข้าใช้ของบุคคลที่สาม Firebase Authentication จะอาศัยข้อมูลเข้าสู่ระบบเพื่อรักษาความปลอดภัยจากผู้ให้บริการบุคคลที่สาม เช่น Twitter และ GitHub
โปรแกรมจำลอง Authentication ยอมรับข้อมูลเข้าสู่ระบบจริงจากผู้ให้บริการ OpenID Connect เช่น Google และ Apple ระบบไม่รองรับข้อมูลเข้าสู่ระบบจากผู้ให้บริการที่ไม่ใช่ OpenID Connect
การลงชื่อเข้าใช้ด้วยอีเมล/SMS
ในแอปเวอร์ชันที่ใช้งานจริง ขั้นตอนการลงชื่อเข้าใช้ด้วยอีเมลและ SMS จะเกี่ยวข้องกับการดำเนินการแบบอะซิงโครนัสซึ่งผู้ใช้จะตรวจสอบข้อความที่ได้รับและป้อนรหัสเข้าสู่ระบบในอินเทอร์เฟซการลงชื่อเข้าใช้ โปรแกรมจำลอง Authentication จะไม่ส่งอีเมลหรือข้อความ SMS แต่จะสร้างรหัสเข้าสู่ระบบและแสดงผลไปยังเทอร์มินัลเพื่อใช้ในการทดสอบตามที่อธิบายไว้ด้านบน
โปรแกรมจำลองไม่รองรับความสามารถในการกำหนดหมายเลขโทรศัพท์ทดสอบด้วยรหัสการเข้าสู่ระบบแบบคงที่เหมือนที่ทำได้โดยใช้คอนโซล Firebase
การตรวจสอบสิทธิ์โทเค็นที่กำหนดเอง
โปรแกรมจำลอง Authentication ไม่ได้ตรวจสอบลายเซ็นหรือการหมดอายุของโทเค็นที่กำหนดเอง ซึ่งจะช่วยให้คุณใช้โทเค็นที่สร้างขึ้นเองและใช้โทเค็นซ้ำได้ไม่จำกัดในสถานการณ์การสร้างต้นแบบและการทดสอบ
การจำกัดอัตราคำขอ/การป้องกันการละเมิด
โปรแกรมจำลอง Authentication ไม่ได้จำลองฟีเจอร์การจำกัดอัตราคำขอหรือการป้องกันการละเมิดในเวอร์ชันที่ใช้งานจริง
ฟังก์ชันการบล็อก
ในเวอร์ชันที่ใช้งานจริง ระบบจะเขียนข้อมูลผู้ใช้ลงในพื้นที่เก็บข้อมูล 1 ครั้งหลังจากที่เรียกให้แสดงทั้งเหตุการณ์ beforeCreate และ beforeSignIn อย่างไรก็ตาม เนื่องจากข้อจำกัดทางเทคนิค โปรแกรมจำลอง Authentication จะเขียนไปยังที่เก็บข้อมูล 2 ครั้ง โดยครั้งแรกหลังจากสร้างผู้ใช้ และอีกครั้งหลังจากลงชื่อเข้าใช้ ซึ่งหมายความว่าสำหรับผู้ใช้ใหม่ คุณจะเรียกใช้ getAuth().getUser() ใน beforeSignIn ในโปรแกรมจำลอง Authentication ได้สำเร็จ แต่จะพบข้อผิดพลาดเมื่อดำเนินการดังกล่าวในเวอร์ชันที่ใช้งานจริง
ฉันควรทำอย่างไรต่อไป
ดูชุดวิดีโอที่คัดสรรมาและตัวอย่างวิธีการโดยละเอียดได้ที่เพลย์ลิสต์การฝึกอบรมเกี่ยวกับโปรแกรมจำลอง Firebase
เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมทั่วไปกับ Authentication โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions for Firebase ที่หัวข้อเรียกใช้ฟังก์ชันในเครื่อง