ก่อนใช้โปรแกรมจำลอง 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การทดสอบแบบไม่โต้ตอบ
แทนที่จะใช้ 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 Sign-In, Apple และผู้ให้บริการอื่นๆ ที่ใช้โทเค็นรหัสที่ติดตั้งใช้งานเป็น JSON Web Token (JWT) เท่านั้น ระบบไม่รองรับโทเค็นเพื่อการเข้าถึง (เช่น โทเค็นที่ Facebook หรือ Twitter ให้มา ซึ่งไม่ใช่ JWT) ส่วนถัดไปจะอธิบายทางเลือกอื่นในกรณีเหล่านี้
การทดสอบแบบไม่โต้ตอบ
วิธีหนึ่งในการทดสอบแบบไม่โต้ตอบคือการคลิกปุ่มของผู้ใช้ในหน้าลงชื่อเข้าใช้ที่โปรแกรมจำลองแสดงโดยอัตโนมัติ สำหรับเว็บแอป ให้ใช้อินเทอร์เฟซการควบคุม เช่น WebDriver สำหรับอุปกรณ์เคลื่อนที่ ให้ใช้เครื่องมือทดสอบ UI จากแพลตฟอร์ม เช่น Espresso หรือ Xcode
หรือคุณจะอัปเดตโค้ดเพื่อใช้ signInWithCredential (เช่น ในชิ้นส่วนโค้ด) และใช้ขั้นตอนการตรวจสอบสิทธิ์โทเค็นกับโทเค็นรหัสจำลองสำหรับบัญชีแทนข้อมูลเข้าสู่ระบบจริงก็ได้
- เปลี่ยนเส้นทางหรือแสดงความคิดเห็นในส่วนของโค้ดที่ดึง 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 ได้สำเร็จ โปรดคิดว่าฟิลด์ 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 ได้ที่ เรียกใช้ฟังก์ชันในเครื่อง