คุณสามารถใช้การตรวจสอบสิทธิ์ Firebase เพื่ออนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปของคุณโดยใช้วิธีการลงชื่อเข้าใช้อย่างน้อย 1 วิธี ซึ่งรวมถึงการลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่าน และผู้ให้บริการข้อมูลประจำตัวแบบรวมศูนย์ เช่น Google Sign-In และการเข้าสู่ระบบ Facebook บทแนะนำนี้จะช่วยคุณเริ่มต้นใช้งานการตรวจสอบสิทธิ์ Firebase โดยแสดงวิธีเพิ่มการลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านลงในแอป
เชื่อมต่อแอปกับ Firebase
- ติดตั้ง Firebase SDK
- ในคอนโซล Firebase เพิ่มแอปของคุณลงในโปรเจ็กต์ Firebase
เพิ่มการตรวจสอบสิทธิ์ Firebase ลงในแอป
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > เพิ่มแพ็กเกจ
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK สำหรับแพลตฟอร์ม Firebase ของ Apple ดังนี้
- เลือกไลบรารีการตรวจสอบสิทธิ์ Firebase
- เพิ่มแฟล็ก
-ObjC
ลงในส่วนแฟล็ก Linker อื่นๆ ของการตั้งค่าบิลด์ของเป้าหมาย - เมื่อเสร็จสิ้นแล้ว Xcode จะเริ่มแก้ปัญหาและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk.git
(ไม่บังคับ) สร้างต้นแบบและทดสอบด้วย Firebase Local Emulator Suite
ก่อนที่จะพูดถึงวิธีที่แอปตรวจสอบสิทธิ์ผู้ใช้ เรามาแนะนำชุดเครื่องมือที่คุณสามารถใช้สร้างต้นแบบและทดสอบฟังก์ชันการตรวจสอบสิทธิ์ นั่นคือ Firebase Local Emulator Suite หากคุณกำลังเลือกเทคนิคและผู้ให้บริการการตรวจสอบสิทธิ์ การลองใช้โมเดลข้อมูลแบบต่างๆ กับข้อมูลส่วนตัวและสาธารณะโดยใช้กฎการตรวจสอบสิทธิ์และกฎการรักษาความปลอดภัยของ Firebase หรือการสร้างต้นแบบการออกแบบ UI การลงชื่อเข้าใช้ การทำงานในเครื่องได้โดยไม่ต้องทำให้บริการแบบสดใช้งานได้อาจเป็นความคิดที่ดี
โปรแกรมจำลองการตรวจสอบสิทธิ์เป็นส่วนหนึ่งของชุดโปรแกรมจำลองภายใน ซึ่งจะช่วยให้แอปโต้ตอบกับเนื้อหาและการกำหนดค่าฐานข้อมูลที่จำลอง ตลอดจนทรัพยากรของโปรเจ็กต์ที่จำลองขึ้นมา (ฟังก์ชัน ฐานข้อมูลอื่นๆ และกฎความปลอดภัย)
การใช้โปรแกรมจำลองการตรวจสอบสิทธิ์มีเพียงไม่กี่ขั้นตอนดังนี้
- การเพิ่มบรรทัดโค้ดลงในการกำหนดค่าการทดสอบของแอปเพื่อเชื่อมต่อกับโปรแกรมจำลอง
- จากรูทของไดเรกทอรีโปรเจ็กต์ในเครื่องโดยเรียกใช้
firebase emulators:start
- การใช้ UI ของชุดโปรแกรมจำลองแบบอินเทอร์แอกทีฟเพื่อสร้างต้นแบบแบบอินเทอร์แอกทีฟ หรือการใช้ REST API โปรแกรมจำลองการตรวจสอบสิทธิ์สำหรับการทดสอบแบบไม่โต้ตอบ
คุณสามารถดูคำแนะนำโดยละเอียดได้ที่เชื่อมต่อแอปกับโปรแกรมจำลองการตรวจสอบสิทธิ์ โปรดดูข้อมูลเพิ่มเติมที่ข้อมูลเบื้องต้นเกี่ยวกับชุดโปรแกรมจำลองภายใน
เอาล่ะ มาต่อเกี่ยวกับวิธีตรวจสอบสิทธิ์ผู้ใช้กัน
เริ่มต้น Firebase SDK
ในการมอบสิทธิ์แอป ให้นำเข้า Firebase SDK ก่อนโดยทำดังนี้
Swift
import FirebaseCore
Objective-C
@import FirebaseCore;
จากนั้นเริ่มต้นออบเจ็กต์ FirebaseApp
ในเมธอด application:didFinishLaunchingWithOptions:
ดังนี้
Swift
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
ฟังสถานะการตรวจสอบสิทธิ์
แนบ Listener กับออบเจ็กต์ FIRAuth
ในมุมมองของแอปแต่ละรายการที่ต้องการข้อมูลเกี่ยวกับผู้ใช้ที่ลงชื่อเข้าใช้ ระบบจะเรียก Listener นี้
เมื่อสถานะการลงชื่อเข้าใช้ของผู้ใช้มีการเปลี่ยนแปลง
แนบ Listener ในเมธอด viewWillAppear
ของตัวควบคุมมุมมอง:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
และปลด Listener ในเมธอด viewWillDisappear
ของตัวควบคุมมุมมองออก:
Swift
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
ลงชื่อสมัครใช้ผู้ใช้ใหม่
สร้างแบบฟอร์มที่อนุญาตให้ผู้ใช้ใหม่ลงทะเบียนกับแอปของคุณโดยใช้อีเมลและรหัสผ่านของผู้ใช้ เมื่อผู้ใช้กรอกแบบฟอร์มแล้ว ให้ตรวจสอบอีเมลและรหัสผ่านที่ผู้ใช้ให้ไว้ จากนั้นส่งต่อไปยังเมธอด createUser
ดังนี้
Swift
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
// ...
}
Objective-C
[[FIRAuth auth] createUserWithEmail:email
password:password
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
ลงชื่อเข้าใช้สำหรับผู้ใช้ที่มีอยู่
สร้างแบบฟอร์มที่อนุญาตให้ผู้ใช้เดิมลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านของตน เมื่อผู้ใช้กรอกแบบฟอร์มแล้ว ให้เรียกเมธอด signIn
:
Swift
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
guard let strongSelf = self else { return }
// ...
}
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text
password:self->_passwordField.text
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
รับข้อมูลผู้ใช้
หลังจากผู้ใช้ลงชื่อเข้าใช้เรียบร้อยแล้ว คุณจะได้รับข้อมูลเกี่ยวกับผู้ใช้รายนั้น ตัวอย่างเช่น ใน Listener สถานะการตรวจสอบสิทธิ์ ให้ทำดังนี้
Swift
if let user = user {
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use getTokenWithCompletion:completion: instead.
let uid = user.uid
let email = user.email
let photoURL = user.photoURL
var multiFactorString = "MultiFactor: "
for info in user.multiFactor.enrolledFactors {
multiFactorString += info.displayName ?? "[DispayName]"
multiFactorString += " "
}
// ...
}
Objective-C
if (user) {
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use getTokenWithCompletion:completion: instead.
NSString *email = user.email;
NSString *uid = user.uid;
NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
[multiFactorString appendString:info.displayName];
[multiFactorString appendString:@" "];
}
NSURL *photoURL = user.photoURL;
// ...
}
ขั้นตอนถัดไป
ดูวิธีเพิ่มการรองรับผู้ให้บริการข้อมูลประจำตัวอื่นๆ และบัญชีผู้ใช้ชั่วคราวที่ไม่ระบุชื่อ
- Google Sign-In
- การเข้าสู่ระบบ Facebook
- การเข้าสู่ระบบ Twitter
- การเข้าสู่ระบบ GitHub
- การลงชื่อเข้าใช้โดยไม่ระบุชื่อ