หากต้องการแชร์สถานะการตรวจสอบสิทธิ์กับแอปหรือส่วนขยายหลายรายการในแพลตฟอร์ม Apple ให้จัดเก็บ สถานะการตรวจสอบสิทธิ์ในคีย์เชนที่แชร์โดยใช้บริการ Keychain และกำหนดค่าให้แอปใช้พวงกุญแจที่แชร์
ซึ่งช่วยให้ผู้ใช้ดำเนินการต่อไปนี้ได้
- ลงชื่อเข้าใช้ครั้งเดียวและลงชื่อเข้าใช้แอปทั้งหมดที่อยู่ในสิทธิ์การเข้าถึงเดียวกัน กลุ่ม
- ออกจากระบบครั้งเดียวและออกจากระบบในแอปทั้งหมดที่อยู่ในสิทธิ์เข้าถึงเดียวกัน กลุ่ม
แชร์สถานะการตรวจสอบสิทธิ์ระหว่างแอป
วิธีแชร์สถานะการตรวจสอบสิทธิ์ระหว่างแอป
ตั้งกลุ่มที่มีสิทธิ์เข้าถึงสำหรับแอป
คุณจะใช้กลุ่มการเข้าถึงคีย์เชนหรือกลุ่มแอปก็ได้ ดูการแชร์สิทธิ์เข้าถึงรายการพวงกุญแจกับคอลเล็กชันของแอป เพื่อดูรายละเอียด
ในการตั้งค่ากลุ่มการเข้าถึง Keychain ให้ดำเนินการดังต่อไปนี้กับแต่ละแอป
- ใน Xcode ให้ไปที่ Project settings > ความสามารถ
- เปิดใช้การแชร์ Keychain
- เพิ่มตัวระบุกลุ่ม Keychain ใช้ตัวระบุเดียวกันสำหรับ แอปที่คุณต้องการแชร์สถานะ
ในแต่ละแอป ให้ตั้งค่ากลุ่มที่มีสิทธิ์เข้าถึงเป็นกลุ่มการเข้าถึงคีย์เชนหรือกลุ่มแอป ที่คุณสร้างไว้ในขั้นตอนก่อนหน้า
do { try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1") } catch let error as NSError { print("Error changing user access group: %@", error) }
[FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1" error:nil];
ลงชื่อเข้าใช้ผู้ใช้ด้วยวิธีการลงชื่อเข้าใช้แบบใดก็ได้ในแอปอย่างน้อย 1 แอป
Auth.auth().signInAnonymously { result, error in // User signed in }
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
ผู้ใช้ปัจจุบันรายเดียวกันนี้มีอยู่ในแอปทั้งหมดในกลุ่มที่มีสิทธิ์เข้าถึง
var user = Auth.auth().currentUser
FIRUser *user = FIRAuth.auth.currentUser;
เปลี่ยนกลับไปใช้ Keychain ที่ไม่ได้แชร์
ตั้งค่ากลุ่มที่มีสิทธิ์เข้าถึงเป็น
nil
เพื่อหยุดแชร์สถานะการตรวจสอบสิทธิ์do { try Auth.auth().useUserAccessGroup(nil) } catch let error as NSError { print("Error changing user access group: %@", error) }
[FIRAuth.auth useUserAccessGroup:nil error:nil];
ลงชื่อเข้าใช้ด้วยวิธีการลงชื่อเข้าใช้ใดก็ได้ สถานะผู้ใช้จะใช้ไม่ได้ ไปยังแอปอื่นๆ ได้
Auth.auth().signInAnonymously { result, error in // User signed in }
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
ย้ายข้อมูลผู้ใช้ที่ลงชื่อเข้าใช้ไปยัง Keychain ที่แชร์
หากต้องการย้ายข้อมูลผู้ใช้ที่ลงชื่อเข้าใช้แล้วไปยังสถานะที่แชร์ ให้ทำดังนี้
อ้างอิงถึงผู้ใช้ปัจจุบันเพื่อการใช้งานในอนาคต
var user = Auth.auth().currentUser
FIRUser *user = FIRAuth.auth.currentUser;
(ไม่บังคับ) ตรวจสอบสถานะการตรวจสอบสิทธิ์ของกลุ่มที่มีสิทธิ์เข้าถึงที่ต้องการแชร์
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 }
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 }
ใช้กลุ่มที่มีสิทธิ์เข้าถึงที่คุณตั้งไว้ก่อนหน้านี้ในการตั้งค่าโปรเจ็กต์
do { try Auth.auth().useUserAccessGroup(accessGroup) } catch let error as NSError { print("Error changing user access group: %@", error) }
[FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
อัปเดตผู้ใช้ปัจจุบัน
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];
ตอนนี้แอปอื่นๆ ที่มีสิทธิ์เข้าถึงกลุ่มเดียวกันจะเข้าถึงผู้ใช้ได้แล้ว