เริ่มต้นใช้งานการรับรองความถูกต้องของ Firebase บนแพลตฟอร์ม Apple

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

เชื่อมต่อแอปของคุณกับ Firebase

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

เพิ่มการตรวจสอบสิทธิ์ Firebase ให้กับแอปของคุณ

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

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

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

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

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

การใช้โปรแกรมจำลองการรับรองความถูกต้องมีเพียงไม่กี่ขั้นตอน:

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

ดูคำแนะนำโดยละเอียดได้ที่ เชื่อมต่อแอปของคุณกับโปรแกรมจำลองการตรวจสอบสิทธิ์ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การแนะนำ Local Emulator Suite

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

เริ่มต้น Firebase SDK

ในตัวแทนแอปของคุณ ให้นำเข้า Firebase SDK ก่อน:

สวิฟท์

import FirebaseCore

วัตถุประสงค์-C

@import FirebaseCore;

จากนั้นในเมธอด application:didFinishLaunchingWithOptions: ให้เริ่มต้นวัตถุ FirebaseApp :

สวิฟท์

// Use Firebase library to configure APIs
FirebaseApp.configure()

วัตถุประสงค์-C

// Use Firebase library to configure APIs
[FIRApp configure];

ฟังสถานะการตรวจสอบสิทธิ์

สำหรับแต่ละมุมมองของแอปที่ต้องการข้อมูลเกี่ยวกับผู้ใช้ที่ลงชื่อเข้าใช้ ให้แนบ Listener เข้ากับออบเจ็ FIRAuth Listener นี้จะถูกเรียกทุกครั้งที่สถานะการลงชื่อเข้าใช้ของผู้ใช้เปลี่ยนแปลง

แนบ Listener ในเมธอด viewWillAppear ของตัวควบคุมมุมมอง:

สวิฟท์

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

วัตถุประสงค์-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

และแยกผู้ฟังในเมธอด viewWillDisappear ของตัวควบคุมมุมมอง:

สวิฟท์

Auth.auth().removeStateDidChangeListener(handle!)

วัตถุประสงค์-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

ลงทะเบียนผู้ใช้ใหม่

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

สวิฟท์

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

วัตถุประสงค์-C

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

ลงชื่อเข้าใช้ผู้ใช้ที่มีอยู่

สร้างแบบฟอร์มที่อนุญาตให้ผู้ใช้ปัจจุบันลงชื่อเข้าใช้ด้วยที่อยู่อีเมลและรหัสผ่านของตน เมื่อผู้ใช้กรอกแบบฟอร์ม ให้เรียกใช้เมธอด signIn :

สวิฟท์

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

วัตถุประสงค์-C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

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

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

สวิฟท์

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 += " "
  }
  // ...
}

วัตถุประสงค์-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;
  // ...
}

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

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