ก่อนใช้โปรแกรมจำลอง 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)
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 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จากแอปโดยใช้เมธอดAuthentication 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 ที่คล้ายกัน ซึ่งรวมถึงพารามิเตอร์ newPassword (ซึ่งคุณสามารถเปลี่ยนแปลงได้ตามต้องการ) ไปยังเทอร์มินัล
http://127.0.0.1:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORDการทดสอบแบบไม่โต้ตอบ
คุณสามารถเขียนสคริปต์การตั้งค่าการทดสอบที่เรียกใช้ REST API เพื่อสร้างและลบบัญชีผู้ใช้ รวมถึงดึงรหัสยืนยันทางอีเมลแบบ Out-of-Band เพื่อป้อน URL การยืนยันอีเมลของโปรแกรมจำลอง แทนที่จะใช้Emulator Suite UI หรือโค้ดฝั่งไคลเอ็นต์เพื่อจัดการบัญชีผู้ใช้อีเมล/รหัสผ่าน วิธีนี้จะแยกแพลตฟอร์มและโค้ดทดสอบออกจากกัน และช่วยให้คุณทดสอบแบบไม่โต้ตอบได้
ลำดับการทดสอบอีเมลและรหัสผ่านแบบไม่โต้ตอบโดยทั่วไปมีดังนี้
- สร้างผู้ใช้ด้วยปลายทาง 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 emulator 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 ของผู้ให้บริการรายนั้น และส่งข้อมูลเข้าสู่ระบบดังกล่าวไปยัง SDK Authentication
โปรดตรวจสอบลิงก์เอกสารประกอบด้านบนอีกครั้งและตรวจสอบว่าคุณคุ้นเคยกับขั้นตอนการทำงานที่คุณต้องการใช้ ไม่ว่าจะเป็นการดึงข้อมูลเข้าสู่ระบบด้วยตนเองหรือ 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 (เช่น ในชิ้นส่วนโค้ด) และใช้ขั้นตอนการทำงานของการตรวจสอบสิทธิ์ด้วยโทเค็นที่มีโทเค็นรหัสจำลองสำหรับบัญชีแทนข้อมูลเข้าสู่ระบบจริงก็ได้
- เปลี่ยนเส้นทางหรือแสดงความคิดเห็นในส่วนของโค้ดที่ดึง idToken จาก IDP ซึ่งจะช่วยลดความจำเป็นในการป้อนชื่อผู้ใช้และรหัสผ่านจริงระหว่างการทดสอบ และช่วยให้การทดสอบไม่ต้องขึ้นอยู่กับโควต้า API และการจำกัดอัตราคำขอที่ IDP
- จากนั้นใช้สตริง JSON แบบ Literal แทนโทเค็นสำหรับ
signInWithCredentialตัวอย่างเช่น หากใช้ Web SDK คุณสามารถเปลี่ยนโค้ดเป็นดังนี้
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
'{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));
เมื่อใช้กับโปรแกรมจำลอง โค้ดนี้จะตรวจสอบสิทธิ์ผู้ใช้ที่มีอีเมล foo@example.com ที่ Google ได้สำเร็จ ให้คิดว่าฟิลด์ `sub` เป็นคีย์หลัก ซึ่งสามารถเปลี่ยนเป็นสตริงใดก็ได้เพื่อจำลองการลงชื่อเข้าใช้ของผู้ใช้รายอื่น คุณสามารถ
แทนที่ 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 for Firebase ได้ที่ เรียกใช้ฟังก์ชันในเครื่อง