การเปิดใช้งานการรับรองความถูกต้องข้ามแอปด้วย Apple Keychain ที่ใช้ร่วมกัน

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

สิ่งนี้ทำให้ผู้ใช้สามารถ:

  • ลงชื่อเข้าใช้ครั้งเดียวและลงชื่อเข้าใช้แอปทั้งหมดที่อยู่ในกลุ่มที่มีสิทธิ์เข้าถึงเดียวกัน
  • ออกจากระบบเพียงครั้งเดียวและออกจากระบบในแอปทั้งหมดที่อยู่ในกลุ่มที่มีสิทธิ์เข้าถึงเดียวกัน

แบ่งปันสถานะการรับรองความถูกต้องระหว่างแอป

หากต้องการแชร์สถานะการรับรองความถูกต้องระหว่างแอป:

  1. ตั้งค่ากลุ่มการเข้าถึงสำหรับแอปของคุณ

    คุณสามารถใช้กลุ่มการเข้าถึงพวงกุญแจหรือกลุ่มแอพก็ได้ ดู การแชร์การเข้าถึงรายการพวงกุญแจระหว่างคอลเลกชันแอพ สำหรับรายละเอียด

    หากต้องการตั้งค่ากลุ่มการเข้าถึงพวงกุญแจ ให้ทำดังต่อไปนี้สำหรับแต่ละแอพ:

    1. ใน Xcode ไปที่ การตั้งค่าโครงการ > ความสามารถ
    2. เปิดใช้งานการแชร์พวงกุญแจ
    3. เพิ่มตัวระบุกลุ่มพวงกุญแจ ใช้ตัวระบุเดียวกันสำหรับแอปทั้งหมดที่คุณต้องการแชร์สถานะ
  2. ในแต่ละแอพ ให้ตั้งค่ากลุ่มการเข้าถึงเป็นกลุ่มการเข้าถึงพวงกุญแจหรือกลุ่มแอพที่คุณสร้างในขั้นตอนก่อนหน้า

    สวิฟท์

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

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

    [FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1"
                                       error:nil];
    
  3. ในแอปอย่างน้อยหนึ่งแอป ให้ลงชื่อเข้าใช้ผู้ใช้ด้วยวิธีลงชื่อเข้าใช้แบบใดก็ได้

    สวิฟท์

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

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

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

    ผู้ใช้ปัจจุบันคนเดียวกันจะพร้อมใช้งานในทุกแอปในกลุ่มที่มีสิทธิ์เข้าถึง

    สวิฟท์

    var user = Auth.auth().currentUser
    

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

    FIRUser *user = FIRAuth.auth.currentUser;
    

สลับกลับไปใช้พวงกุญแจที่ไม่ได้แชร์

  1. ตั้งค่ากลุ่มการเข้าถึงเป็น nil เพื่อหยุดการแชร์สถานะการตรวจสอบสิทธิ์

    สวิฟท์

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

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

    [FIRAuth.auth useUserAccessGroup:nil error:nil];
    
  2. ลงชื่อเข้าใช้ผู้ใช้ด้วยวิธีลงชื่อเข้าใช้แบบใดก็ได้ สถานะผู้ใช้จะไม่สามารถใช้ได้กับแอปอื่น ๆ

    สวิฟท์

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

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

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

ย้ายผู้ใช้ที่ลงชื่อเข้าใช้ไปยังพวงกุญแจที่แชร์

หากต้องการย้ายผู้ใช้ที่ลงชื่อเข้าใช้แล้วไปยังสถานะที่แชร์ ให้ทำดังนี้

  1. อ้างอิงถึงผู้ใช้ปัจจุบันเพื่อใช้ในอนาคต

    สวิฟท์

    var user = Auth.auth().currentUser
    

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

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (ไม่บังคับ) ตรวจสอบสถานะการตรวจสอบสิทธิ์ของกลุ่มการเข้าถึงที่คุณต้องการแชร์

    สวิฟท์

    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
    }
    

    วัตถุประสงค์-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. ใช้กลุ่มการเข้าถึงที่คุณตั้งไว้ก่อนหน้านี้ในการตั้งค่าโครงการ

    สวิฟท์

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

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

    [FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
    
  4. อัปเดตผู้ใช้ปัจจุบัน

    สวิฟท์

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

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

    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. ขณะนี้ผู้ใช้สามารถเข้าถึงได้โดยแอปอื่นที่มีสิทธิ์เข้าถึงกลุ่มที่มีสิทธิ์เข้าถึงเดียวกัน