ก่อนใช้โปรแกรมจำลอง Authentication กับแอป โปรดตรวจสอบว่า คุณเข้าใจFirebase Local Emulator Suiteเวิร์กโฟลว์โดยรวม และติดตั้งและกำหนดค่า Local Emulator Suite รวมถึงอ่านคำสั่ง CLI
หัวข้อนี้ถือว่าคุณคุ้นเคยกับการพัฒนาFirebase Authenticationโซลูชันสำหรับการใช้งานจริงอยู่แล้ว หากจำเป็น โปรดอ่านเอกสารประกอบ สำหรับการผสมผสานระหว่างแพลตฟอร์มและเทคนิคการตรวจสอบสิทธิ์
ฉันใช้Authenticationอีมูเลเตอร์ทำอะไรได้บ้าง
AuthenticationโปรแกรมจำลองจะจำลองบริการFirebase Authenticationในเครื่องได้อย่างแม่นยำ ซึ่งมีฟังก์ชันการทำงานส่วนใหญ่ที่พบในเวอร์ชันที่ใช้งานจริงFirebase Authentication เมื่อใช้ร่วมกับแพลตฟอร์ม Apple, SDK ของ Firebase สำหรับ 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 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จะยอมรับโทเค็น ID ที่ไม่ได้ลงนามและคุกกี้เซสชันที่ออกโดยโปรแกรมจำลอง 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 Interface และ Emulator Suite UI ให้เรียกใช้คำสั่งต่อไปนี้
firebase emulators:start
การตรวจสอบสิทธิ์อีเมล ลิงก์อีเมล และการตรวจสอบสิทธิ์แบบไม่ระบุตัวตนที่จำลอง
สำหรับการตรวจสอบสิทธิ์แบบไม่ระบุตัวตน แอปของคุณสามารถใช้ตรรกะการลงชื่อเข้าใช้สำหรับแพลตฟอร์ม (iOS, Android, เว็บ)
สำหรับการตรวจสอบสิทธิ์ด้วยอีเมล/รหัสผ่าน คุณสามารถเริ่มสร้างต้นแบบได้โดยการเพิ่ม บัญชีผู้ใช้ลงในโปรแกรมจำลอง Authentication จากแอปโดยใช้วิธีการของ Authentication SDK หรือโดยใช้ 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 Endpoint signUp
- ลงชื่อเข้าใช้ผู้ใช้โดยใช้อีเมลและรหัสผ่านเพื่อทำการทดสอบ
- หากการทดสอบของคุณเกี่ยวข้อง ให้ดึงรหัสการยืนยันทางอีเมลนอกแบนด์ที่มีอยู่ จากปลายทาง REST ที่เฉพาะเจาะจงของโปรแกรมจำลอง
- ล้างระเบียนผู้ใช้ด้วยปลายทาง REST เฉพาะของโปรแกรมจำลองเพื่อล้างข้อมูล
การตรวจสอบสิทธิ์ทางโทรศัพท์/SMS ที่จำลอง
สำหรับการตรวจสอบสิทธิ์ทางโทรศัพท์ โปรแกรมจำลอง Auth ไม่รองรับรายการต่อไปนี้
- ขั้นตอนการทำงานของ reCAPTCHA และ APN เมื่อกำหนดค่าให้โต้ตอบกับโปรแกรมจำลองแล้ว Client SDK จะปิดใช้เมธอดการยืนยันเหล่านี้ในลักษณะเดียวกับที่อธิบายไว้สำหรับการทดสอบการผสานรวม (iOS, Android, เว็บ)
- ทดสอบหมายเลขโทรศัพท์ด้วยรหัสที่กำหนดค่าไว้ล่วงหน้าในคอนโซล Firebase
ไม่เช่นนั้น ในส่วนของโค้ดไคลเอ็นต์ ขั้นตอนการตรวจสอบสิทธิ์ทางโทรศัพท์/SMS จะเหมือนกับที่อธิบายไว้สำหรับการใช้งานจริง (iOS, Android, เว็บ)
วิธีใช้ Emulator Suite UI
- ใน Emulator Suite UI ให้คลิกแท็บ Authentication
- คลิกปุ่มเพิ่มผู้ใช้
- ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้โดยกรอกข้อมูลในช่องการตรวจสอบสิทธิ์ทางโทรศัพท์
อย่างไรก็ตาม สำหรับโฟลว์การตรวจสอบสิทธิ์ทางโทรศัพท์ โปรแกรมจำลองจะไม่ทริกเกอร์การนำส่ง
ข้อความ SMS เนื่องจากการติดต่อผู้ให้บริการอยู่นอกขอบเขตและไม่
เหมาะสำหรับการทดสอบในพื้นที่ แต่โปรแกรมจำลองจะพิมพ์รหัสที่ควรจะส่งผ่าน SMS ไปยังเทอร์มินัลเดียวกันกับที่คุณเรียกใช้ firebase emulators:start
ป้อนรหัสนี้ลงในแอปเพื่อจำลองผู้ใช้ที่ตรวจสอบข้อความ
การทดสอบแบบไม่โต้ตอบ
สําหรับการทดสอบการตรวจสอบสิทธิ์ทางโทรศัพท์แบบไม่โต้ตอบ ให้ใช้ AuthenticationREST API ของโปรแกรมจำลอง เพื่อดึงรหัส SMS ที่ใช้ได้ โปรดทราบว่าโค้ดจะแตกต่างกันทุกครั้งที่คุณเริ่มขั้นตอน
ลำดับทั่วไปมีดังนี้
- โทรหาแพลตฟอร์ม
signInWithPhoneNumber
เพื่อเริ่มกระบวนการยืนยันตัวตน - ดึงรหัสยืนยันโดยใช้ปลายทาง REST เฉพาะอีมูเลเตอร์
- โทรหา
confirmationResult.confirm(code)
ตามปกติพร้อมรหัสยืนยัน
SMS แบบหลายปัจจัย
Authentication โปรแกรมจำลองรองรับการสร้างต้นแบบและการทดสอบขั้นตอนการตรวจสอบแบบ 2 ขั้นทาง SMS (MFA) ที่พร้อมใช้งานในเวอร์ชันที่ใช้งานจริงสำหรับ 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 (JWT) ไม่รองรับโทเค็นการเข้าถึง
(เช่น โทเค็นที่ Facebook หรือ Twitter ให้มา ซึ่งไม่ใช่ JWT)
ส่วนถัดไปจะกล่าวถึงทางเลือกในกรณีเหล่านี้
การทดสอบแบบไม่โต้ตอบ
วิธีหนึ่งในการทดสอบแบบไม่โต้ตอบคือการทำให้การคลิกของผู้ใช้ในหน้าลงชื่อเข้าใช้ ที่อีมูเลเตอร์แสดงผลเป็นแบบอัตโนมัติ สำหรับเว็บแอป ให้ใช้อินเทอร์เฟซควบคุม เช่น WebDriver สำหรับอุปกรณ์เคลื่อนที่ ให้ใช้เครื่องมือทดสอบ UI จากแพลตฟอร์ม เช่น Espresso หรือ Xcode
หรือจะอัปเดตรหัสเพื่อใช้ signInWithCredential
(เช่น ในสาขารหัส) และใช้ขั้นตอนการตรวจสอบสิทธิ์โทเค็นกับโทเค็น
ID แบบจำลองสำหรับบัญชีแทนข้อมูลเข้าสู่ระบบจริงก็ได้
- ต่อสายใหม่หรือแสดงความคิดเห็นในส่วนของโค้ดที่ดึงข้อมูล idToken จาก 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')
หรือรหัสผู้ให้บริการอื่นๆ ที่ต้องการ
จำลอง
การตรวจสอบสิทธิ์โทเค็นที่กำหนดเองที่จำลอง
Authenticationโปรแกรมจำลองจะจัดการการตรวจสอบสิทธิ์ด้วยโทเค็นเว็บ JSON ที่กำหนดเองโดยใช้
การเรียกไปยังเมธอด signInWithCustomToken
ในแพลตฟอร์มที่รองรับตามที่อธิบายไว้
ในเอกสารประกอบAuthenticationการใช้งานจริง
ความแตกต่างระหว่างAuthenticationโปรแกรมจำลองกับเวอร์ชันที่ใช้งานจริง
Authenticationโปรแกรมจำลองของ Firebase จะจำลองฟีเจอร์ต่างๆ ของผลิตภัณฑ์เวอร์ชันที่ใช้งานจริง อย่างไรก็ตาม เนื่องจากระบบการตรวจสอบสิทธิ์ทุกประเภทต้องอาศัย การรักษาความปลอดภัยในหลายระดับ (อุปกรณ์ ผู้ให้บริการบุคคลที่สาม Firebase ฯลฯ) อย่างมาก จึงเป็นเรื่องยากที่โปรแกรมจำลองจะสร้างโฟลว์ทั้งหมดขึ้นมาใหม่ได้อย่างถูกต้อง
Cloud IAM
ชุดโปรแกรมจำลองของ Firebase ไม่พยายามจำลองหรือคำนึงถึงลักษณะการทำงานที่เกี่ยวข้องกับ IAM สำหรับการเรียกใช้ โปรแกรมจำลองจะปฏิบัติตามกฎการรักษาความปลอดภัยของ Firebase ที่ระบุไว้ แต่ในกรณีที่ปกติจะใช้ IAM เช่น เพื่อตั้งค่าบัญชีบริการที่เรียกใช้ Cloud Functions และสิทธิ์ต่างๆ โปรแกรมจำลองจะกำหนดค่าไม่ได้และจะใช้บัญชีที่พร้อมใช้งานทั่วโลกในเครื่องของนักพัฒนาซอฟต์แวร์ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
ลงชื่อเข้าใช้ผ่านลิงก์ในอีเมลบนอุปกรณ์เคลื่อนที่
เนื่องจากการลงชื่อเข้าใช้ด้วยลิงก์อีเมลในแพลตฟอร์มอุปกรณ์เคลื่อนที่จะอาศัยลิงก์แบบไดนามิกของ Firebase ลิงก์ดังกล่าวทั้งหมดจะเปิดในแพลตฟอร์มเว็บ (อุปกรณ์เคลื่อนที่) แทน
การลงชื่อเข้าใช้ของบุคคลที่สาม
สำหรับขั้นตอนการลงชื่อเข้าใช้ของบุคคลที่สาม Firebase Authentication จะใช้ข้อมูลเข้าสู่ระบบที่ปลอดภัย จากผู้ให้บริการบุคคลที่สาม เช่น Twitter และ GitHub
โปรแกรมจำลอง Authentication ยอมรับข้อมูลเข้าสู่ระบบจริงจากผู้ให้บริการ OpenID Connect เช่น Google และ Apple ระบบไม่รองรับข้อมูลเข้าสู่ระบบจากผู้ให้บริการที่ไม่ใช่ OpenID Connect
การลงชื่อเข้าใช้ด้วยอีเมล / SMS
ในแอปที่ใช้งานจริง ขั้นตอนการลงชื่อเข้าใช้ด้วยอีเมลและ SMS จะเกี่ยวข้องกับการดำเนินการแบบไม่พร้อมกัน ซึ่งผู้ใช้จะตรวจสอบข้อความที่ได้รับและป้อนรหัสเข้าสู่ระบบ ลงในอินเทอร์เฟซการลงชื่อเข้าใช้ Authenticationโปรแกรมจำลองจะไม่ส่งอีเมลหรือข้อความ SMS แต่จะสร้างรหัสเข้าสู่ระบบและแสดงรหัสในเทอร์มินัลเพื่อใช้ในการ ทดสอบตามที่อธิบายไว้ด้านบน
โปรแกรมจำลองไม่รองรับความสามารถในการกำหนดหมายเลขโทรศัพท์ทดสอบที่มีรหัสเข้าสู่ระบบแบบคงที่เหมือนกับที่ทำได้โดยใช้Firebaseคอนโซล
การตรวจสอบสิทธิ์โทเค็นที่กำหนดเอง
โปรแกรมจำลอง Authentication ไม่ได้ตรวจสอบลายเซ็นหรือวันหมดอายุของโทเค็นที่กำหนดเอง ซึ่งช่วยให้คุณใช้โทเค็นที่สร้างขึ้นเองและนำโทเค็นกลับมาใช้ซ้ำได้ อย่างไม่มีกำหนดในสถานการณ์การสร้างต้นแบบและการทดสอบ
การจำกัดอัตราคำขอ / การป้องกันการละเมิด
โปรแกรมจำลอง Authentication ไม่ได้จำลองการจำกัดอัตราการใช้งานในเวอร์ชันที่ใช้งานจริงหรือฟีเจอร์ป้องกันการละเมิด
ฟังก์ชันการบล็อก
ในเวอร์ชันที่ใช้งานจริง ระบบจะเขียนผู้ใช้ไปยังที่เก็บข้อมูลเพียงครั้งเดียวหลังจากที่เรียกเหตุการณ์ทั้ง beforeCreate
และ beforeSignIn
อย่างไรก็ตาม เนื่องจากข้อจำกัดทางเทคนิค
โปรแกรมจำลอง Authentication จะเขียนไปยังที่เก็บข้อมูล 2 ครั้ง ครั้งแรกหลังจากสร้างผู้ใช้ และ
อีกครั้งหลังจากลงชื่อเข้าใช้ ซึ่งหมายความว่าสำหรับผู้ใช้ใหม่ คุณจะเรียกใช้
getAuth().getUser()
ใน beforeSignIn
ในโปรแกรมจำลอง Authentication ได้สำเร็จ แต่จะพบข้อผิดพลาดหากทำเช่นนั้นในเวอร์ชันที่ใช้งานจริง
ฉันควรทำอย่างไรต่อไป
ดูชุดวิดีโอที่ดูแลและตัวอย่างวิธีใช้อย่างละเอียดได้ที่เพลย์ลิสต์การฝึกของ Firebase Emulators
เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมทั่วไปกับ Authentication ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions สำหรับ Firebase ได้ที่เรียกใช้ฟังก์ชันในเครื่อง