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ể sử dụng tính năng Xác thực Firebase để cho phép người dùng đăng nhập vào ứng dụng của mình bằng một hoặc phương thức đăng nhập khác, bao gồm đăng nhập bằng địa chỉ email và mật khẩu, và nhà cung cấp danh tính được liên kết, chẳng hạn như Đăng nhập bằng Google và Đăng nhập Facebook. Chiến dịch này sẽ giúp bạn bắt đầu với Xác thực Firebase bằng cách chỉ cho bạn cách thêm địa chỉ email và mật khẩu để đăng nhập 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 của Firebase, hãy thêm ứng dụng của bạn vào dự án Firebase.

Thêm tính năng Xác thực Firebase vào ứng dụng

Sử dụng Trình quản lý gói Swift để cài đặt và quản lý các phần phụ thuộc Firebase.

  1. Trong Xcode, khi dự án ứng dụng của bạn đang mở, hãy chuyển đến Tệp > Thêm gói.
  2. Khi được nhắc, hãy thêm kho lưu trữ SDK nền tảng Apple của Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Chọn thư viện Xác thực Firebase.
  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 xuống các phần phụ thuộc trong nền.

(Không bắt buộc) Tạo nguyên mẫu và thử nghiệm bằng Bộ mô phỏng cục bộ của Firebase

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 số công cụ bạn có thể sử dụng để tạo nguyên mẫu và kiểm tra chức năng Xác thực: Bộ mô phỏng cục bộ của Firebase. Nếu bạn đang quyết định chọn các kỹ thuật xác thực và nhà cung cấp, thử 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 Quy tắc bảo mật Firebase và Xác thực hoặc tạo nguyên mẫu cho thiết kế giao diện người dùng đăng nhập, có thể làm việc cục bộ mà không triển khai dịch vụ trực tiếp có thể là ý tưởng hay.

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

Việc sử dụng Trình mô phỏng xác thực chỉ bao gồm một vài bước:

  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. Trên gốc của thư mục dự án cục bộ, chạy firebase emulators:start.
  3. Sử dụng giao diện người dùng Bộ công cụ mô phỏng cục bộ để tạo nguyên mẫu tương tác, hoặc API REST của trình mô phỏng xác thực để kiểm thử không tương tác.

Bạn có thể xem hướng dẫn chi tiết tại bài viết Kết nối ứng dụng với Trình mô phỏng xác thực. Để biết thêm thông tin, hãy xem Giới thiệu về Bộ công cụ mô phỏng cục bộ.

Giờ hãy tiếp tục với cách xác thực người dùng.

Chạy SDK Firebase

Trong đại biểu ứng dụng, trước tiên hãy nhập SDK Firebase:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

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

Swift

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

Objective-C

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

Theo dõi trạng thái xác thực

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

Đính kèm trình nghe vào phương thức viewWillAppear của trình đ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) {
      // ...
    }];

Đồng thời, hãy tách trình nghe trong phương thức viewWillDisappear của trình điều khiển khung hiển thị:

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ý ứng dụng của bạn bằng địa chỉ email của họ địa chỉ và mật khẩu. Khi người dùng hoàn tất biểu mẫu, hãy xác thực email địa chỉ và mật khẩu do người dùng cung cấp, sau đó chuyển chúng đến createUser phương thức:

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 có

Tạo biểu mẫu cho phép người dùng hiện tại đăng nhập bằng địa chỉ email của họ và mật khẩu. 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 thông tin về người dùng đó. Cho 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 tính năng hỗ trợ cho các nhà cung cấp danh tính và khách ẩn danh khác tài khoản: