Bắt đầu với tính năng xác thực Firebase trên các nền tảng của Apple

Bạn có thể dùng Firebase Authentication để cho phép người dùng đăng nhập vào ứng dụng của bạn bằng một hoặc nhiều phương thức đăng nhập, bao gồm cả phương thức đăng nhập bằng địa chỉ email và mật khẩu, cũng như các nhà cung cấp danh tính liên kết như Đăng nhập bằng Google và Đăng nhập bằng Facebook. Hướng dẫn này giúp bạn bắt đầu sử dụng Firebase Authentication bằng cách hướng dẫn cách thêm tính năng đăng nhập bằng địa chỉ email và mật khẩu vào ứng dụng của bạn.

Kết nối ứng dụng của bạn với Firebase

  1. Cài đặt Firebase SDK.
  2. Trong bảng điều khiển Firebase, hãy thêm ứng dụng của bạn vào dự án Firebase.

Thêm Firebase Authentication vào ứng dụng

Sử dụng Swift Package Manager để cài đặt và quản lý các phần phụ thuộc của Firebase.

  1. Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy chuyển đến File > Add Packages (Tệp > Thêm gói).
  2. Khi được nhắc, hãy thêm kho lưu trữ SDK Firebase cho các nền tảng của Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Chọn thư viện Firebase Authentication.
  5. Thêm cờ -ObjC vào mục Cờ trình liên kết khác trong chế độ cài đặt bản dựng của mục tiêu.
  6. Khi hoàn tất, Xcode sẽ tự động bắt đầu phân giải và tải các phần phụ thuộc của bạn xuống ở chế độ nền.

(Không bắt buộc) Tạo mẫu và kiểm thử bằng Firebase Local Emulator Suite

Trước khi nói về cách ứng dụng của bạn xác thực người dùng, hãy giới thiệu một bộ công cụ mà bạn có thể dùng để tạo mẫu và kiểm thử chức năng Authentication: Firebase Local Emulator Suite. Nếu bạn đang quyết định giữa các kỹ thuật và nhà cung cấp xác thực, thử nghiệm các mô hình dữ liệu khác nhau với dữ liệu công khai và riêng tư bằng cách sử dụng AuthenticationFirebase Security Rules hoặc tạo mẫu thiết kế giao diện người dùng đăng nhập, thì việc có thể làm việc cục bộ mà không cần triển khai các dịch vụ trực tiếp có thể là một ý tưởng hay.

Trình mô phỏng Authentication là một phần của Local Emulator Suite, cho phép ứng dụng của bạn tương tác với nội dung và cấu hình cơ sở dữ liệu được mô phỏng, cũng như các tài nguyên dự án được mô phỏng (các hàm, cơ sở dữ liệu khác và quy tắc bảo mật) (không bắt buộc).

Bạn chỉ cần thực hiện vài bước để sử dụng trình mô phỏng Authentication:

  1. Thêm một dòng mã vào cấu hình kiểm thử của ứng dụng để kết nối với trình mô phỏng.
  2. Từ gốc của thư mục dự án cục bộ, hãy chạy firebase emulators:start.
  3. Sử dụng giao diện người dùng Local Emulator Suite để tạo mẫu tương tác hoặc API REST của trình mô phỏng Authentication để kiểm thử không tương tác.

Bạn có thể xem hướng dẫn chi tiết tại phần Kết nối ứng dụng với trình mô phỏng Authentication. Để biết thêm thông tin, hãy xem phần giới thiệu về Local Emulator Suite.

Bây giờ, hãy tiếp tục tìm hiểu cách xác thực người dùng.

Khởi chạy Firebase SDK

Trong uỷ quyền ứng dụng, trước tiên hãy nhập Firebase SDK:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

Sau đó, trong phương thức application:didFinishLaunchingWithOptions:, hãy khởi động đối tượng FirebaseApp:

Swift

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

Objective-C

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

Nghe trạng thái xác thực

Đối với mỗi khung hiển thị trong ứng dụng cần thông tin về người dùng đã đăng nhập, hãy đính kèm một trình nghe vào đối tượng FIRAuth. Trình nghe này được gọi mỗi khi trạng thái đăng nhập của người dùng thay đổi.

Đính kèm trình nghe trong phương thức viewWillAppear của bộ điều khiển khung hiển thị:

Swift

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

Objective-C

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

Và tách trình nghe trong phương thức viewWillDisappear của bộ điều khiển chế độ xem:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Đăng ký người dùng mới

Tạo một biểu mẫu cho phép người dùng mới đăng ký bằng địa chỉ email và mật khẩu của họ trong ứng dụng của bạn. Khi người dùng hoàn tất biểu mẫu, hãy xác thực địa chỉ email và mật khẩu do người dùng cung cấp, sau đó chuyển chúng đến phương thức 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) {
  // ...
}];

Đăng nhập người dùng hiện tại

Tạo một biểu mẫu cho phép người dùng hiện tại đăng nhập bằng địa chỉ email và mật khẩu của họ. Khi người dùng hoàn tất biểu mẫu, hãy gọi phương thức 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) {
  // ...
}];

Lấy thông tin người dùng

Sau khi người dùng đăng nhập thành công, bạn có thể nhận được thông tin về người dùng đó. Ví dụ: trong trình nghe trạng thái xác thực:

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

Các bước tiếp theo

Tìm hiểu cách thêm chế độ hỗ trợ cho các nhà cung cấp danh tính khác và tài khoản khách ẩn danh: