Kích hoạt xác thực nhiều ứng dụng bằng Chuỗi khóa Apple được chia sẻ

Để chia sẻ trạng thái xác thực trên nhiều ứng dụng hoặc tiện ích mở rộng trên nền tảng Apple, hãy lưu trữ trạng thái xác thực trong chuỗi khóa chung bằng Dịch vụ chuỗi khóa và định cấu hình ứng dụng của bạn để sử dụng chuỗi khóa chung.

Điều này cho phép người dùng:

  • Đăng nhập một lần và đăng nhập trên tất cả các ứng dụng thuộc cùng một nhóm truy cập.
  • Đăng xuất một lần và đăng xuất trên tất cả các ứng dụng thuộc cùng một nhóm truy cập.

Chia sẻ trạng thái xác thực giữa các ứng dụng

Để chia sẻ trạng thái xác thực giữa các ứng dụng:

  1. Thiết lập nhóm truy cập cho ứng dụng của bạn.

    Bạn có thể sử dụng nhóm truy cập chuỗi khóa hoặc nhóm ứng dụng. Xem Chia sẻ quyền truy cập vào các mục chuỗi khóa trong bộ sưu tập ứng dụng để biết chi tiết.

    Để thiết lập nhóm truy cập chuỗi khóa, hãy làm như sau cho từng ứng dụng:

    1. Trong Xcode, đi tới Cài đặt dự án > Khả năng .
    2. Bật chia sẻ chuỗi khóa.
    3. Thêm mã nhận dạng nhóm chuỗi khóa. Sử dụng cùng một mã định danh cho tất cả các ứng dụng bạn muốn chia sẻ trạng thái.
  2. Trong mỗi ứng dụng, hãy đặt nhóm truy cập thành nhóm truy cập chuỗi khóa hoặc nhóm ứng dụng mà bạn đã tạo ở bước trước.

    Nhanh

    do {
      try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1")
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Mục tiêu-C

    [FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1"
                                       error:nil];
    
  3. Trong ít nhất một ứng dụng, hãy đăng nhập người dùng bằng bất kỳ phương thức đăng nhập nào.

    Nhanh

    Auth.auth().signInAnonymously { result, error in
      // User signed in
    }
    

    Mục tiêu-C

    [FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result,
                                               NSError *_Nullable error) {
      // User signed in
    }];
    

    Người dùng hiện tại giống nhau có sẵn trong tất cả các ứng dụng trong nhóm truy cập.

    Nhanh

    var user = Auth.auth().currentUser
    

    Mục tiêu-C

    FIRUser *user = FIRAuth.auth.currentUser;
    

Chuyển về chuỗi khóa không chia sẻ

  1. Đặt nhóm truy cập thành nil để ngừng chia sẻ trạng thái xác thực.

    Nhanh

    do {
      try Auth.auth().useUserAccessGroup(nil)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Mục tiêu-C

    [FIRAuth.auth useUserAccessGroup:nil error:nil];
    
  2. Đăng nhập người dùng bằng bất kỳ phương thức đăng nhập nào. Trạng thái người dùng sẽ không có sẵn cho bất kỳ ứng dụng nào khác.

    Nhanh

    Auth.auth().signInAnonymously { result, error in
      // User signed in
    }
    

    Mục tiêu-C

    [FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result,
                                       NSError *_Nullable error) {
      // User signed in
    }];
    

Di chuyển người dùng đã đăng nhập sang chuỗi khóa được chia sẻ

Để di chuyển người dùng đã đăng nhập sang trạng thái chia sẻ:

  1. Tạo một tài liệu tham khảo cho người dùng hiện tại để sử dụng trong tương lai.

    Nhanh

    var user = Auth.auth().currentUser
    

    Mục tiêu-C

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (Tùy chọn) Kiểm tra trạng thái xác thực của nhóm truy cập bạn muốn chia sẻ.

    Nhanh

    let accessGroup = "TEAMID.com.example.group1"
    var tempUser: User?
    do {
      try tempUser = Auth.auth().getStoredUser(forAccessGroup: accessGroup)
    } catch let error as NSError {
      print("Error getting stored user: %@", error)
    }
    if tempUser != nil {
      // A user exists in the access group
    } else {
      // No user exists in the access group
    }
    

    Mục tiêu-C

    NSString *accessGroup = @"TEAMID.com.example.group1";
    FIRUser *tempUser = [FIRAuth getStoredUserForAccessGroup:accessGroup
                                                       error:nil];
    if (tempUser) {
      // A user exists in the access group
      } else {
      // No user exists in the access group
    }
    
  3. Sử dụng nhóm truy cập mà bạn đã đặt trước đó trong cài đặt dự án.

    Nhanh

    do {
      try Auth.auth().useUserAccessGroup(accessGroup)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Mục tiêu-C

    [FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
    
  4. Cập nhật người dùng hiện tại.

    Nhanh

    Auth.auth().updateCurrentUser(user!) { error in
      // Error handling
    }
    

    Mục tiêu-C

    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. Giờ đây, người dùng có thể được truy cập bởi các ứng dụng khác có quyền truy cập vào cùng một nhóm truy cập.