ก่อนใช้โปรแกรมจำลอง 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 ในไดเรกทอรีทํางาน หรือจะส่งผ่าน Flag --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 เนื่องจากการติดต่อผู้ให้บริการอยู่นอกขอบเขตและไม่เหมาะกับการทดสอบในเครื่อง แต่โปรแกรมจำลองจะพิมพ์รหัสที่ควรจะส่งผ่าน SMS ไปยังเทอร์มินัลเดียวกับที่คุณเรียกใช้firebase emulators:start
แทน ให้ป้อนรหัสนี้ลงในแอปเพื่อจำลองผู้ใช้ที่ตรวจสอบข้อความ
การทดสอบแบบไม่โต้ตอบ
สําหรับการทดสอบการตรวจสอบสิทธิ์ทางโทรศัพท์แบบไม่อินเทอร์แอกทีฟ ให้ใช้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 ของแพลตฟอร์ม
โปรแกรมจําลองจะสร้างบัญชีผู้ใช้และข้อมูลเข้าสู่ระบบของบุคคลที่สามจำลองตามที่จำเป็นขณะที่ขั้นตอนดำเนินไป
การทดสอบขั้นตอนการเข้าสู่ระบบด้วยบริการระบุตัวตนผ่านอินเทอร์เน็ตด้วยการเรียกข้อมูลเข้าสู่ระบบด้วยตนเอง
หากคุณใช้เทคนิคการลงชื่อเข้าใช้ "ด้วยตนเอง" และเรียกsignInWithCredentials
วิธีของแพลตฟอร์ม แอปจะขอการลงชื่อเข้าใช้ของบุคคลที่สามจริงและดึงข้อมูลเข้าสู่ระบบของบุคคลที่สามจริงตามปกติ
โปรดทราบว่าโปรแกรมจำลองจะรองรับเฉพาะการตรวจสอบสิทธิ์ signInWithCredential
สำหรับข้อมูลเข้าสู่ระบบที่ดึงมาจาก Google Sign-In, Apple และผู้ให้บริการรายอื่นๆ ที่ใช้โทเค็นระบุตัวตนที่ติดตั้งใช้งานเป็น JSON Web Token (JWT) ระบบไม่รองรับโทเค็นการเข้าถึง (เช่น โทเค็นที่ Facebook หรือ Twitter ระบุ ซึ่งไม่ใช่ JWT) ส่วนถัดไปจะกล่าวถึงทางเลือกในกรณีเหล่านี้
การทดสอบแบบไม่โต้ตอบ
แนวทางหนึ่งในการทดสอบแบบไม่โต้ตอบคือการคลิกของผู้ใช้ในหน้าลงชื่อเข้าใช้ที่แสดงโดยโปรแกรมจำลองให้ทำงานอัตโนมัติ สําหรับเว็บแอป ให้ใช้อินเทอร์เฟซการควบคุม เช่น WebDriver สำหรับอุปกรณ์เคลื่อนที่ ให้ใช้เครื่องมือทดสอบ UI จากแพลตฟอร์ม เช่น Espresso หรือ Xcode
หรือจะอัปเดตโค้ดให้ใช้ signInWithCredential
(เช่น ในสาขาโค้ด) และใช้ขั้นตอนการตรวจสอบสิทธิ์ด้วยโทเค็นกับโทเค็นรหัสจำลองสำหรับบัญชีแทนข้อมูลเข้าสู่ระบบจริงก็ได้
- เดินสายใหม่หรือใส่ความคิดเห็นในส่วนโค้ดที่ดึงข้อมูล idToken จาก IdP ซึ่งจะทำให้ไม่ต้องป้อนชื่อผู้ใช้และรหัสผ่านจริงในระหว่างการทดสอบ และทำให้ไม่ต้องคำนึงถึงโควต้า API และขีดจำกัดอัตราที่ IdP
- ประการที่ 2 ให้ใช้สตริง 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 ที่กําหนดเองโดยใช้การเรียกใช้เมธอด signInWithCustomToken
ในแพลตฟอร์มที่รองรับ ตามที่อธิบายไว้ในเอกสารประกอบ Authentication เวอร์ชันที่ใช้งานจริง
ความแตกต่างระหว่างโปรแกรมจำลอง Authentication กับเวอร์ชันที่ใช้งานจริง
Authenticationโปรแกรมจำลองของ Firebase จะจำลองฟีเจอร์หลายอย่างของผลิตภัณฑ์เวอร์ชันที่ใช้งานจริง อย่างไรก็ตาม เนื่องจากระบบการตรวจสอบสิทธิ์ทุกประเภทอาศัยการรักษาความปลอดภัยในระดับต่างๆ (อุปกรณ์ ผู้ให้บริการบุคคลที่สาม Firebase ฯลฯ) จำลองจึงสร้างขั้นตอนทั้งหมดขึ้นมาใหม่ได้อย่างถูกต้อง
Cloud IAM
ชุดโปรแกรมจำลอง Firebase จะไม่พยายามจำลองหรือยึดตามลักษณะการทำงานที่เกี่ยวข้องกับ IAM ใดๆ สำหรับการเรียกใช้ โปรแกรมจำลองจะเป็นไปตามกฎการรักษาความปลอดภัยของ Firebase ที่ระบุไว้ แต่ในกรณีที่ปกติแล้วจะใช้ IAM เช่น เพื่อตั้งค่าบัญชีบริการที่เรียกใช้ Cloud Functions และสิทธิ์ต่างๆ โปรแกรมจำลองจะไม่สามารถกําหนดค่าได้ แต่จะใช้บัญชีที่พร้อมใช้งานทั่วโลกในเครื่องของนักพัฒนาซอฟต์แวร์ ซึ่งคล้ายกับการใช้สคริปต์ในเครื่องโดยตรง
ลงชื่อเข้าใช้ผ่านลิงก์อีเมลบนอุปกรณ์เคลื่อนที่
เนื่องจากการลงชื่อเข้าใช้ด้วยลิงก์อีเมลในแพลตฟอร์มอุปกรณ์เคลื่อนที่ใช้ Firebase Dynamic Links ลิงก์ดังกล่าวทั้งหมดจึงจะเปิดในแพลตฟอร์มเว็บ (อุปกรณ์เคลื่อนที่) แทน
การลงชื่อเข้าใช้ของบุคคลที่สาม
สำหรับขั้นตอนการลงชื่อเข้าใช้ของบุคคลที่สาม 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 ที่หัวข้อเรียกใช้ฟังก์ชันในเครื่อง