ก่อนใช้โปรแกรมจำลอง Authentication กับแอป โปรดตรวจสอบว่า คุณ เข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite, รวมถึงติดตั้งและกำหนดค่า Local Emulator Suite และอ่านคำสั่ง CLI ของชุดเครื่องมือดังกล่าว
หัวข้อนี้จะถือว่าคุณคุ้นเคยกับการพัฒนา Firebase Authenticationโซลูชันสำหรับการใช้งานจริงอยู่แล้ว หากจำเป็น โปรดอ่านเอกสารประกอบ สำหรับ แพลตฟอร์มและเทคนิคการตรวจสอบสิทธิ์ที่คุณใช้
ฉันทำอะไรได้บ้างด้วยโปรแกรมจำลอง Authentication
โปรแกรมจำลอง Authentication จะจำลองบริการ Firebase Authenticationในเครื่องได้อย่างแม่นยำ โดยมีฟังก์ชันการทำงานส่วนใหญ่ที่พบใน การใช้งานจริง Firebase Authentication เมื่อใช้ร่วมกับ Firebase SDK ของแพลตฟอร์ม Apple, Android และเว็บ โปรแกรมจำลองจะช่วยให้คุณทำสิ่งต่อไปนี้ได้
- สร้าง อัปเดต และจัดการบัญชีผู้ใช้ที่จำลองขึ้นเพื่อทดสอบการตรวจสอบสิทธิ์ด้วยอีเมล/รหัสผ่าน หมายเลขโทรศัพท์/SMS, SMS แบบหลายปัจจัย และผู้ให้บริการข้อมูลประจำตัวบุคคลที่สาม (เช่น Google)
- ดูและแก้ไขผู้ใช้ที่จำลองขึ้น
- สร้างต้นแบบระบบการตรวจสอบสิทธิ์ด้วยโทเค็นที่กำหนดเอง
- ตรวจสอบข้อความที่เกี่ยวข้องกับการตรวจสอบสิทธิ์ในแท็บบันทึกของ UI โปรแกรมจำลอง
เลือกโปรเจ็กต์ 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)
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 SDKs จะเชื่อมต่อกับโปรแกรมจำลอง 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 จะออกโทเค็นรหัสที่ ไม่ได้ลงชื่อ ซึ่ง โปรแกรมจำลอง Firebase อื่นๆ หรือ Firebase Admin SDK จะยอมรับเมื่อ กำหนดค่าแล้วเท่านั้น บริการ Firebase สำหรับการใช้งานจริงหรือ Firebase Admin SDK ที่ทำงานในโหมดการใช้งานจริง (เช่น ลักษณะการทำงานเริ่มต้นโดยไม่มีขั้นตอนการตั้งค่าที่อธิบายไว้ข้างต้น) จะปฏิเสธโทเค็นเหล่านี้
เริ่มโปรแกรมจำลอง
คุณสามารถใช้โปรแกรมจำลอง Authentication แบบโต้ตอบผ่าน Emulator Suite UI และแบบไม่โต้ตอบผ่านอินเทอร์เฟซ REST ในเครื่อง ส่วนต่อไปนี้จะครอบคลุม Use Case แบบโต้ตอบและแบบไม่โต้ตอบ
หากต้องการเริ่มโปรแกรมจำลอง Authentication อินเทอร์เฟซ REST และ Emulator Suite UI ให้ดำเนินการดังนี้
firebase emulators:start
การตรวจสอบสิทธิ์ด้วยอีเมล อีเมลลิงก์ และการตรวจสอบสิทธิ์แบบไม่ระบุชื่อที่จำลองขึ้น
สำหรับการตรวจสอบสิทธิ์แบบไม่ระบุชื่อ แอปของคุณสามารถใช้ตรรกะการลงชื่อเข้าใช้สำหรับ แพลตฟอร์ม (iOS, Android, เว็บ)
สำหรับการตรวจสอบสิทธิ์ด้วยอีเมล/รหัสผ่าน คุณสามารถเริ่มสร้างต้นแบบได้โดยการเพิ่ม บัญชีผู้ใช้ลงในโปรแกรมจำลองAuthenticationจากแอปโดยใช้เมธอด SDKAuthentication หรือโดยใช้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 ที่คล้ายกัน ซึ่งรวมถึงพารามิเตอร์ 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 เพื่อสร้าง และลบบัญชีผู้ใช้ รวมถึงดึงรหัสยืนยันทางอีเมลแบบ Out-of-Band เพื่อป้อนข้อมูลใน URL การยืนยันทางอีเมลของโปรแกรมจำลอง วิธีนี้จะแยกแพลตฟอร์มและโค้ดทดสอบออกจากกัน และช่วยให้คุณทดสอบแบบไม่โต้ตอบได้
สำหรับขั้นตอนการทดสอบอีเมลและรหัสผ่านแบบไม่โต้ตอบ ลำดับโดยทั่วไปจะเป็นดังนี้
- สร้างผู้ใช้ด้วยปลายทาง REST ของการลงชื่อสมัครใช้Authentication
- ลงชื่อเข้าใช้ผู้ใช้โดยใช้อีเมลและรหัสผ่านเพื่อทำการทดสอบ
- หากการทดสอบของคุณเกี่ยวข้อง ให้ดึงรหัสยืนยันทางอีเมลแบบ Out-of-Band ที่ใช้ได้จากปลายทาง REST เฉพาะของโปรแกรมจำลอง
- ล้างระเบียนผู้ใช้ด้วยปลายทาง REST เฉพาะของโปรแกรมจำลองเพื่อล้างข้อมูล
การตรวจสอบสิทธิ์ด้วยโทรศัพท์/SMS ที่จำลองขึ้น
สำหรับการตรวจสอบสิทธิ์ด้วยโทรศัพท์ โปรแกรมจำลองการตรวจสอบสิทธิ์ไม่รองรับสิ่งต่อไปนี้
- ขั้นตอน reCAPTCHA และ APN เมื่อกำหนดค่าให้โต้ตอบกับโปรแกรมจำลองแล้ว SDK ของไคลเอ็นต์จะปิดใช้เมธอดการยืนยันเหล่านี้ในลักษณะที่คล้ายกับที่อธิบายไว้สำหรับการทดสอบการผสานรวม (iOS, Android, เว็บ)
- หมายเลขโทรศัพท์ทดสอบที่มีรหัสที่กำหนดค่าไว้ล่วงหน้าใน Firebase คอนโซล
นอกเหนือจากนั้น ในแง่ของโค้ดฝั่งไคลเอ็นต์ ขั้นตอนการตรวจสอบสิทธิ์ด้วยโทรศัพท์/SMS จะ เหมือนกับที่อธิบายไว้สำหรับการใช้งานจริง (iOS, Android, เว็บ)
การใช้ Emulator Suite UI
- ใน Emulator Suite UI ให้คลิกแท็บการตรวจสอบสิทธิ์
- คลิกปุ่มเพิ่มผู้ใช้
- ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้ โดยกรอกข้อมูลในช่องการตรวจสอบสิทธิ์ด้วยโทรศัพท์
อย่างไรก็ตาม สำหรับโฟลว์การตรวจสอบสิทธิ์ด้วยโทรศัพท์ โปรแกรมจำลองจะไม่ทริกเกอร์การส่งข้อความ SMS เนื่องจากการติดต่อผู้ให้บริการอยู่นอกขอบเขตและไม่เหมาะสำหรับการทดสอบในเครื่อง แต่โปรแกรมจำลองจะพิมพ์รหัสที่ควรจะส่งผ่าน SMS ไปยังเทอร์มินัลเดียวกันกับที่คุณเรียกใช้ firebase emulators:start ให้ป้อนรหัสนี้ลงในแอปเพื่อจำลองผู้ใช้ที่ตรวจสอบข้อความ SMS
การทดสอบแบบไม่โต้ตอบ
สำหรับการทดสอบการตรวจสอบสิทธิ์ด้วยโทรศัพท์แบบไม่โต้ตอบ ให้ใช้โปรแกรมจำลองAuthentication REST API เพื่อดึงรหัส 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 ของผู้ให้บริการรายนั้น และส่งข้อมูลเข้าสู่ระบบดังกล่าวไปยัง Authentication SDK
โปรดตรวจสอบลิงก์เอกสารประกอบด้านบนอีกครั้งและตรวจสอบว่าคุณคุ้นเคยกับโฟลว์ที่คุณต้องการใช้ ไม่ว่าจะเป็นการดึงข้อมูลเข้าสู่ระบบที่ Firebase SDK จัดการหรือการดึงข้อมูลเข้าสู่ระบบด้วยตนเอง โปรแกรมจำลอง Authentication รองรับการทดสอบทั้ง 2 แนวทาง
การทดสอบขั้นตอน IDP ที่ขับเคลื่อนโดย Firebase SDK
หากแอปใช้ขั้นตอนแบบครบวงจรของ Firebase SDK เช่น OAuthProvider สำหรับ
การลงชื่อเข้าใช้ด้วย Microsoft, GitHub หรือ Yahoo สำหรับการทดสอบแบบโต้ตอบ โปรแกรมจำลองAuthentication
จะแสดงหน้าลงชื่อเข้าใช้เวอร์ชันในเครื่องที่เกี่ยวข้องเพื่อช่วยคุณ
ทดสอบการตรวจสอบสิทธิ์จากเว็บแอปที่เรียกใช้เมธอด signinWithPopup หรือ
signInWithRedirect หน้าลงชื่อเข้าใช้ที่แสดงในเครื่องนี้จะปรากฏในแอปบนอุปกรณ์เคลื่อนที่ด้วย โดยแสดงผลโดยไลบรารี WebView ของแพลตฟอร์ม
โปรแกรมจำลองจะสร้างบัญชีผู้ใช้และข้อมูลเข้าสู่ระบบของบุคคลที่สามจำลองตามที่จำเป็นเมื่อขั้นตอนดำเนินไป
การทดสอบขั้นตอน IDP ด้วยการดึงข้อมูลเข้าสู่ระบบด้วยตนเอง
หากคุณใช้เทคนิคการลงชื่อเข้าใช้แบบ "ด้วยตนเอง" และเรียกใช้เมธอด signInWithCredentials ของแพลตฟอร์ม แอปของคุณจะขอการลงชื่อเข้าใช้ของบุคคลที่สามจริงและดึงข้อมูลเข้าสู่ระบบของบุคคลที่สามจริงตามปกติ
โปรดทราบว่าโปรแกรมจำลองรองรับการตรวจสอบสิทธิ์ signInWithCredential สำหรับข้อมูลเข้าสู่ระบบที่ดึงมาจากการลงชื่อเข้าใช้ด้วยบัญชี Google, Apple และผู้ให้บริการอื่นๆ ที่ใช้โทเค็นรหัสที่ติดตั้งใช้งานเป็น JSON Web Token (JWT) เท่านั้น ระบบไม่รองรับโทเค็นเพื่อการเข้าถึง (เช่น โทเค็นที่ Facebook หรือ Twitter ให้มา ซึ่งไม่ใช่ JWT) ส่วนถัดไปจะกล่าวถึงทางเลือกอื่นในกรณีเหล่านี้
การทดสอบแบบไม่โต้ตอบ
แนวทางหนึ่งในการทดสอบแบบไม่โต้ตอบคือการคลิกปุ่มของผู้ใช้ในหน้าลงชื่อเข้าใช้ที่โปรแกรมจำลองแสดงโดยอัตโนมัติ สำหรับเว็บแอป ให้ใช้อินเทอร์เฟซการควบคุม เช่น WebDriver สำหรับอุปกรณ์เคลื่อนที่ ให้ใช้เครื่องมือทดสอบ UI จากแพลตฟอร์ม เช่น Espresso หรือ Xcode
หรือคุณจะอัปเดตโค้ดเพื่อใช้ signInWithCredential (เช่น ใน Branch โค้ด) และใช้ขั้นตอนการตรวจสอบสิทธิ์ด้วยโทเค็นกับโทเค็นรหัสจำลองสำหรับบัญชีแทนข้อมูลเข้าสู่ระบบจริงก็ได้
- เปลี่ยนเส้นทางหรือทำเครื่องหมายเป็นความคิดเห็นในส่วนของโค้ดที่ดึง idToken จาก 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') หรือรหัสผู้ให้บริการอื่นๆ ที่คุณต้องการ
จำลอง
การตรวจสอบสิทธิ์ด้วยโทเค็นที่กำหนดเองที่จำลองขึ้น
โปรแกรมจำลอง Authentication จะจัดการการตรวจสอบสิทธิ์ด้วย JSON Web Token ที่กำหนดเองโดยใช้
การเรียกเมธอด signInWithCustomToken ในแพลตฟอร์มที่รองรับ ตามที่อธิบาย
ไว้ในเอกสารประกอบ สำหรับการใช้งานจริง Authentication
ความแตกต่างระหว่างโปรแกรมจำลองAuthenticationกับการใช้งานจริง
โปรแกรมจำลอง Authentication ของ Firebase จะจำลองฟีเจอร์ต่างๆ ของผลิตภัณฑ์สำหรับการใช้งานจริง อย่างไรก็ตาม เนื่องจากระบบการตรวจสอบสิทธิ์ทุกประเภทต้องอาศัยความปลอดภัยในหลายระดับ (อุปกรณ์ ผู้ให้บริการบุคคลที่สาม 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ได้สำเร็จ แต่จะ
พบข้อผิดพลาดหากทำเช่นนั้นในการใช้งานจริง
ฉันควรทำอย่างไรต่อไป
หากต้องการดูวิดีโอที่ดูแลและตัวอย่างวิธีใช้อย่างละเอียด ให้ทำตาม เพลย์ลิสต์การฝึกของ Firebase Emulators
เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นฟังก์ชันที่ผสานรวมกับAuthenticationโดยทั่วไป โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions สำหรับ Firebase ได้ที่ เรียกใช้ฟังก์ชันในเครื่อง