Kimlik doğrulama durumlarını Apple platformlarındaki birden fazla uygulama veya uzantı arasında paylaşmak için, kimlik doğrulama durumunu Anahtar Zinciri Hizmetleri'ni kullanarak paylaşılan bir anahtar zincirinde saklayın ve uygulamalarınızı paylaşılan anahtar zincirini kullanacak şekilde yapılandırın.
Bu, kullanıcıların şunları yapmasına olanak tanır:
- Bir kez oturum açın ve aynı erişim grubuna ait tüm uygulamalarda oturum açın.
- Bir kez çıkış yapın ve aynı erişim grubuna ait tüm uygulamalarda oturumunuzu kapatın.
Kimlik doğrulama durumunu uygulamalar arasında paylaşma
Kimlik doğrulama durumunu uygulamalar arasında paylaşmak için:
Uygulamalarınız için bir erişim grubu oluşturun.
Bir anahtarlık erişim grubu veya uygulama grubu kullanabilirsiniz. Ayrıntılar için bkz. Bir Uygulama Koleksiyonu Arasında Anahtarlık Öğelerine Erişimi Paylaşma .
Bir anahtarlık erişim grubu oluşturmak için her uygulama için aşağıdakileri yapın:
- Xcode'da Proje ayarları > Yetenekler'e gidin.
- Anahtar Zinciri Paylaşımını etkinleştirin.
- Bir anahtarlık grubu tanımlayıcısı ekleyin. Durumunu paylaşmak istediğiniz tüm uygulamalar için aynı tanımlayıcıyı kullanın.
Her uygulamada erişim grubunu önceki adımda oluşturduğunuz anahtarlık erişim grubuna veya uygulama grubuna ayarlayın.
Süratli
do { try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1") } catch let error as NSError { print("Error changing user access group: %@", error) }
Amaç-C
[FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1" error:nil];
En az bir uygulamada herhangi bir oturum açma yöntemini kullanarak bir kullanıcının oturumunu açın.
Süratli
Auth.auth().signInAnonymously { result, error in // User signed in }
Amaç-C
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
Erişim grubundaki tüm uygulamalarda aynı geçerli kullanıcı mevcuttur.
Süratli
var user = Auth.auth().currentUser
Amaç-C
FIRUser *user = FIRAuth.auth.currentUser;
Paylaşılmayan bir anahtarlığa geri dönme
Kimlik doğrulama durumunu paylaşmayı durdurmak için erişim grubunu
nil
olarak ayarlayın.Süratli
do { try Auth.auth().useUserAccessGroup(nil) } catch let error as NSError { print("Error changing user access group: %@", error) }
Amaç-C
[FIRAuth.auth useUserAccessGroup:nil error:nil];
Herhangi bir oturum açma yöntemiyle bir kullanıcıyla oturum açın. Kullanıcı durumu diğer uygulamalar tarafından kullanılamayacaktır.
Süratli
Auth.auth().signInAnonymously { result, error in // User signed in }
Amaç-C
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
Oturum açmış bir kullanıcıyı paylaşılan bir anahtarlığa geçirme
Zaten oturum açmış olan bir kullanıcıyı paylaşılan bir duruma taşımak için:
Gelecekte kullanmak üzere mevcut kullanıcıya referans verin.
Süratli
var user = Auth.auth().currentUser
Amaç-C
FIRUser *user = FIRAuth.auth.currentUser;
(İsteğe bağlı) Paylaşmak istediğiniz erişim grubunun kimlik doğrulama durumunu kontrol edin.
Süratli
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 }
Amaç-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 }
Daha önce proje ayarlarında belirlediğiniz bir erişim grubunu kullanın.
Süratli
do { try Auth.auth().useUserAccessGroup(accessGroup) } catch let error as NSError { print("Error changing user access group: %@", error) }
Amaç-C
[FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
Geçerli kullanıcıyı güncelleyin.
Süratli
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
Amaç-C
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];
Artık kullanıcıya aynı erişim grubuna erişimi olan diğer uygulamalar tarafından erişilebilir.