เริ่มต้นใช้งานการตรวจสอบสิทธิ์ Firebase บนแพลตฟอร์ม Apple

คุณใช้ Firebase Authentication เพื่ออนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปโดยใช้วิธีการลงชื่อเข้าใช้หนึ่งวิธีขึ้นไป ซึ่งรวมถึงการลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่าน รวมถึงผู้ให้บริการข้อมูลประจำตัวแบบรวม เช่น Google Sign-In และ Facebook Login บทแนะนำนี้จะช่วยให้คุณเริ่มต้นใช้งาน Firebase Authentication โดยแสดงวิธีเพิ่ม การลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านในแอป

เชื่อมต่อแอปกับ Firebase

  1. ติดตั้ง Firebase SDK
  2. ในFirebaseคอนโซล ให้เพิ่มแอปไปยังโปรเจ็กต์ Firebase

เพิ่ม Firebase Authentication ลงในแอป

ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase

  1. ใน Xcode ขณะที่โปรเจ็กต์แอปเปิดอยู่ ให้ไปที่ไฟล์ > เพิ่มแพ็กเกจ
  2. เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK ของแพลตฟอร์ม Apple ของ Firebase โดยทำดังนี้
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. เลือกFirebase Authenticationคลัง
  5. เพิ่มแฟล็ก -ObjC ลงในส่วนแฟล็ก Linker อื่นๆ ของการตั้งค่าบิลด์ของเป้าหมาย
  6. เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการขึ้นต่อกันในเบื้องหลังโดยอัตโนมัติ

(ไม่บังคับ) สร้างต้นแบบและทดสอบด้วย Firebase Local Emulator Suite

ก่อนจะพูดถึงวิธีที่แอปของคุณตรวจสอบสิทธิ์ผู้ใช้ เรามาทำความรู้จักชุดเครื่องมือที่คุณใช้สร้างต้นแบบและทดสอบAuthenticationฟังก์ชันการทำงาน Firebase Local Emulator Suiteกันก่อน หากคุณกำลังตัดสินใจเลือกเทคนิคการตรวจสอบสิทธิ์ และผู้ให้บริการ ลองใช้โมเดลข้อมูลต่างๆ กับข้อมูลสาธารณะและข้อมูลส่วนตัว โดยใช้ Authentication และ Firebase Security Rules หรือสร้างต้นแบบการออกแบบ UI การลงชื่อเข้าใช้ การทำงานในเครื่องโดยไม่ต้องติดตั้งใช้งานบริการจริงอาจเป็นไอเดียที่ดี

Authenticationโปรแกรมจำลองเป็นส่วนหนึ่งของ Local Emulator Suite ซึ่ง ช่วยให้แอปของคุณโต้ตอบกับเนื้อหาและค่ากำหนดของฐานข้อมูลจำลองได้ รวมถึงทรัพยากรของโปรเจ็กต์จำลอง (ฟังก์ชัน ฐานข้อมูลอื่นๆ และกฎความปลอดภัย) ด้วย

การใช้Authenticationโปรแกรมจำลองมีเพียงไม่กี่ขั้นตอน ดังนี้

  1. การเพิ่มบรรทัดโค้ดลงในการกำหนดค่าการทดสอบของแอปเพื่อเชื่อมต่อกับโปรแกรมจำลอง
  2. จากรูทของไดเรกทอรีโปรเจ็กต์ที่อยู่ในเครื่อง ให้เรียกใช้ firebase emulators:start
  3. ใช้ Local Emulator Suite UI สำหรับการสร้างต้นแบบแบบอินเทอร์แอกทีฟ หรือใช้ Authentication REST API ของโปรแกรมจำลองสำหรับการทดสอบแบบไม่โต้ตอบ

ดูคำแนะนำโดยละเอียดได้ที่เชื่อมต่อแอปกับโปรแกรมจำลอง Authentication ดูข้อมูลเพิ่มเติมได้ที่Local Emulator Suite ข้อมูลเบื้องต้น

ตอนนี้เรามาดูวิธีตรวจสอบสิทธิ์ผู้ใช้กันต่อ

เริ่มต้นใช้ Firebase SDK

ใน App Delegate ให้นำเข้า Firebase SDK ก่อน

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

จากนั้นในเมธอด application:didFinishLaunchingWithOptions: ให้เริ่มต้นออบเจ็กต์ FirebaseApp ดังนี้

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) {
  // ...
}];

รับข้อมูลผู้ใช้

หลังจากที่ผู้ใช้ลงชื่อเข้าใช้เรียบร้อยแล้ว คุณจะได้รับข้อมูลเกี่ยวกับผู้ใช้ ตัวอย่างเช่น ในเครื่องมือฟังสถานะการตรวจสอบสิทธิ์

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;
  // ...
}

ขั้นตอนถัดไป

ดูวิธีเพิ่มการรองรับผู้ให้บริการข้อมูลประจำตัวอื่นๆ และบัญชีผู้ใช้ชั่วคราวแบบไม่ระบุตัวตน