ก่อนใช้โปรแกรมจำลอง Authentication กับแอป โปรดตรวจสอบว่าคุณเข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite และติดตั้งและกำหนดค่า Local Emulator Suite รวมถึงตรวจสอบคําสั่ง CLI ของ Local Emulator Suite
หัวข้อนี้ถือว่าคุณคุ้นเคยกับการพัฒนาโซลูชัน Firebase Authentication สําหรับเวอร์ชันที่ใช้งานจริงอยู่แล้ว โปรดอ่านเอกสารประกอบสำหรับแพลตฟอร์มและเทคนิคการตรวจสอบสิทธิ์ที่รวมกัน หากจำเป็น
ฉันใช้โปรแกรมจำลอง Authentication ทำอะไรได้บ้าง
โปรแกรมจำลอง Authentication ให้การจําลองบริการ Firebase Authentication ในพื้นที่ที่มีความแม่นยำสูง ซึ่งให้ฟังก์ชันการทํางานส่วนใหญ่ที่พบใน Firebase Authentication เวอร์ชันที่ใช้งานจริง เมื่อใช้ร่วมกับแพลตฟอร์ม Apple, Android และ Firebase SDK บนเว็บ โปรแกรมจําลองจะทําสิ่งต่อไปนี้ได้
- สร้าง อัปเดต และจัดการบัญชีผู้ใช้จำลองเพื่อทดสอบการตรวจสอบสิทธิ์ของผู้ให้บริการข้อมูลประจำตัวบุคคลที่สาม (เช่น Google) อีเมล/รหัสผ่าน หมายเลขโทรศัพท์/SMS และการตรวจสอบสิทธิ์แบบหลายปัจจัยผ่าน SMS
- ดูและแก้ไขผู้ใช้จำลอง
- สร้างต้นแบบระบบการตรวจสอบสิทธิ์โทเค็นที่กำหนดเอง
- ตรวจสอบข้อความที่เกี่ยวข้องกับการตรวจสอบสิทธิ์ในแท็บบันทึก 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+KTX
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 จะยอมรับโทเค็นรหัสที่ไม่ผ่านการรับรองและคุกกี้เซสชันที่ออกโดยโปรแกรมจำลอง 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 จากแอปโดยใช้เมธอด 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 เพื่อสร้างและลบบัญชีผู้ใช้ รวมถึงดึงข้อมูลรหัสยืนยันอีเมลนอกแบนด์เพื่อป้อนข้อมูลใน URL การยืนยันอีเมลของโปรแกรมจำลอง วิธีนี้ช่วยให้แพลตฟอร์มและโค้ดทดสอบแยกกันอยู่ และช่วยให้คุณทดสอบแบบไม่โต้ตอบได้
สำหรับขั้นตอนการทดสอบอีเมลและรหัสผ่านแบบไม่โต้ตอบ ลำดับการทำงานทั่วไปจะเป็นไปตามลำดับต่อไปนี้
- สร้างผู้ใช้ด้วย Authentication ปลายทาง REST ของ signUp
- ให้ผู้ใช้ลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านเพื่อทำการทดสอบ
- หากการทดสอบของคุณเกี่ยวข้อง ให้ดึงรหัสการยืนยันอีเมลนอกช่องทางที่มีอยู่จากปลายทาง REST สำหรับโปรแกรมจำลองโดยเฉพาะ
- ล้างระเบียนผู้ใช้ด้วยปลายทาง REST สำหรับโปรแกรมจำลองโดยเฉพาะเพื่อล้างข้อมูล
การจำลองการตรวจสอบสิทธิ์ทางโทรศัพท์/SMS
โปรแกรมจำลองการตรวจสอบสิทธิ์ไม่รองรับการตรวจสอบสิทธิ์ทางโทรศัพท์ดังต่อไปนี้
- ขั้นตอนการยืนยัน reCAPTCHA และ APN เมื่อกําหนดค่าให้โต้ตอบกับโปรแกรมจําลองแล้ว SDK ของไคลเอ็นต์จะปิดใช้วิธีการยืนยันเหล่านี้ในลักษณะที่คล้ายกับที่อธิบายไว้สําหรับการทดสอบการผสานรวม (iOS, Android, เว็บ)
- ทดสอบหมายเลขโทรศัพท์ด้วยรหัสที่กำหนดค่าไว้ล่วงหน้าในคอนโซล Firebase
หรือในแง่ของโค้ดไคลเอ็นต์ ขั้นตอนการตรวจสอบสิทธิ์ทางโทรศัพท์/SMS จะเหมือนกับที่อธิบายไว้สำหรับเวอร์ชันที่ใช้งานจริง (iOS, Android, เว็บ)
วิธีใช้ Emulator Suite UI
- ใน Emulator Suite UI ให้คลิกแท็บการตรวจสอบสิทธิ์
- คลิกปุ่มเพิ่มผู้ใช้
- ทำตามวิซาร์ดการสร้างบัญชีผู้ใช้โดยกรอกข้อมูลในช่องการตรวจสอบสิทธิ์ทางโทรศัพท์
อย่างไรก็ตาม สำหรับขั้นตอนการตรวจสอบสิทธิ์ทางโทรศัพท์ โปรแกรมจำลองจะไม่ทริกเกอร์การส่งข้อความใดๆ เนื่องจากการติดต่อผู้ให้บริการอยู่นอกขอบเขตและไม่เหมาะกับการทดสอบในเครื่อง แต่โปรแกรมจำลองจะพิมพ์รหัสที่ส่งผ่าน 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 วิธี
การทดสอบขั้นตอนการเข้าสู่ระบบของผู้ให้บริการระบุตัวตนที่ขับเคลื่อนโดย 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
(เช่น ใน Branch ของโค้ด) และใช้ขั้นตอนการตรวจสอบสิทธิ์โทเค็นที่มีโทเค็นจำลองรหัสสําหรับบัญชีแทนข้อมูลเข้าสู่ระบบจริง
- เดินสายใหม่หรือใส่ความคิดเห็นในส่วนโค้ดที่ดึงข้อมูล 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 กับเวอร์ชันที่ใช้งานจริง
โปรแกรมจำลอง Firebase Authentication จะจำลองฟีเจอร์มากมายของผลิตภัณฑ์เวอร์ชันที่ใช้งานจริง อย่างไรก็ตาม เนื่องจากระบบการตรวจสอบสิทธิ์ทุกประเภทอาศัยการรักษาความปลอดภัยในระดับต่างๆ (อุปกรณ์ ผู้ให้บริการบุคคลที่สาม 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 ไม่ได้จำลองการจำกัดอัตราหรือฟีเจอร์ป้องกันการละเมิดของเวอร์ชันที่ใช้งานจริง
ฟังก์ชันการบล็อก
ในเวอร์ชันที่ใช้งานจริง ระบบจะเขียนผู้ใช้ลงในพื้นที่เก็บข้อมูล 1 ครั้งหลังจากที่เรียกเหตุการณ์ beforeCreate
และ beforeSignIn
ทั้งคู่ให้แสดง อย่างไรก็ตาม เนื่องจากข้อจํากัดทางเทคนิค เครื่องจําลอง Authentication จะเขียนลงในที่เก็บข้อมูล 2 ครั้ง โดย 1 ครั้งหลังจากสร้างผู้ใช้ และอีก 1 ครั้งหลังจากลงชื่อเข้าใช้ ซึ่งหมายความว่าสําหรับผู้ใช้ใหม่ คุณจะเรียกใช้ getAuth().getUser()
ใน beforeSignIn
ในโปรแกรมจําลอง Authentication ได้สําเร็จ แต่คุณจะพบข้อผิดพลาดเมื่อทําเช่นนั้นในเวอร์ชันที่ใช้งานจริง
ฉันควรทำอย่างไรต่อไป
หากต้องการดูชุดวิดีโอที่มีการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตามเพลย์ลิสต์การฝึกของ Firebase Emulators
เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมทั่วไปกับ Authentication โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions สําหรับ Firebase ที่หัวข้อเรียกใช้ฟังก์ชันในเครื่อง