Untuk berbagi status autentikasi di sejumlah aplikasi atau ekstensi di platform Apple, simpan status autentikasi di keychain bersama menggunakan Keychain Services dan konfigurasikan aplikasi Anda untuk menggunakan keychain bersama.
Hal ini memungkinkan pengguna untuk:
- Login sekali dan di semua aplikasi milik grup akses yang sama.
- Logout sekali dan di semua aplikasi milik grup akses yang sama.
Berbagi status autentikasi antaraplikasi
Untuk berbagi status autentikasi antaraplikasi:
Siapkan grup akses untuk aplikasi Anda.
Anda dapat menggunakan grup akses keychain atau grup aplikasi. Baca Berbagi Akses ke Item Keychain di Antara Kumpulan Aplikasi untuk mengetahui detailnya.
Untuk menyiapkan grup akses keychain, lakukan hal berikut untuk setiap aplikasi:
- Di Xcode, buka Project settings > Capabilities.
- Aktifkan Keychain Sharing.
- Tambahkan ID grup keychain. Gunakan ID yang sama untuk semua aplikasi yang statusnya ingin Anda bagikan.
Di setiap aplikasi, tetapkan grup akses ke grup akses keychain atau grup aplikasi yang Anda buat di langkah sebelumnya.
Swift
do { try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1") } catch let error as NSError { print("Error changing user access group: %@", error) }
Objective-C
[FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1" error:nil];
Di setidaknya satu aplikasi, buat pengguna login dengan metode login apa saja.
Swift
Auth.auth().signInAnonymously { result, error in // User signed in }
Objective-C
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
Pengguna yang sama saat ini tersedia di semua aplikasi dalam grup akses.
Swift
var user = Auth.auth().currentUser
Objective-C
FIRUser *user = FIRAuth.auth.currentUser;
Beralih kembali ke keychain yang tidak dibagikan
Tetapkan grup akses ke
nil
untuk berhenti berbagi status autentikasi.Swift
do { try Auth.auth().useUserAccessGroup(nil) } catch let error as NSError { print("Error changing user access group: %@", error) }
Objective-C
[FIRAuth.auth useUserAccessGroup:nil error:nil];
Buat pengguna login dengan metode login apa saja. Status pengguna tidak akan tersedia untuk aplikasi lain.
Swift
Auth.auth().signInAnonymously { result, error in // User signed in }
Objective-C
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
Memigrasikan pengguna yang sudah login ke keychain bersama
Untuk memigrasikan pengguna yang sudah login ke status bersama:
Buat referensi ke pengguna saat ini untuk penggunaan mendatang.
Swift
var user = Auth.auth().currentUser
Objective-C
FIRUser *user = FIRAuth.auth.currentUser;
(Opsional) Periksa status autentikasi dari grup akses yang ingin Anda bagikan.
Swift
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 }
Objective-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 }
Gunakan grup akses yang sebelumnya Anda tetapkan dalam setelan project.
Swift
do { try Auth.auth().useUserAccessGroup(accessGroup) } catch let error as NSError { print("Error changing user access group: %@", error) }
Objective-C
[FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
Perbarui pengguna saat ini.
Swift
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
Objective-C
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];
Pengguna kini dapat diakses oleh aplikasi lain yang memiliki akses ke grup akses yang sama.