Paylaşılan Apple Anahtar Zinciri ile uygulamalar arası kimlik doğrulamayı etkinleştirme

Apple platformlarında birden fazla uygulama veya uzantıda kimlik doğrulama durumlarını paylaşmak için Store Anahtar Zinciri Hizmetleri'ni kullanan paylaşılan bir anahtar zincirindeki kimlik doğrulama durumu ve uygulamalarınızı paylaşılan anahtar zincirini kullanacak şekilde yapılandırın.

Bu sayede kullanıcılar:

  • Bir kez oturum açtıktan sonra aynı erişime ait tüm uygulamalarda oturum açın grubu.
  • Bir kez oturum kapatarak aynı erişim grubuna ait tüm uygulamalarda oturumunuz kapatılır.

Uygulamalar arasında kimlik doğrulama durumunu paylaşma

Kimlik doğrulama durumunu uygulamalar arasında paylaşmak için:

  1. Uygulamalarınız için bir erişim grubu oluşturun.

    Anahtar zinciri erişim grubu veya uygulama grubu kullanabilirsiniz. Bkz. Bir Uygulama Koleksiyonu Arasında Anahtar Zinciri Öğelerine Erişimi Paylaşma inceleyebilirsiniz.

    Anahtar zinciri erişim grubu oluşturmak için her uygulamada aşağıdakileri yapın:

    1. Xcode'da Proje ayarları > Özellikler.
    2. Anahtar Zinciri Paylaşımını etkinleştir.
    3. Anahtar zinciri grubu tanımlayıcısı ekleyin. Durumu paylaşmak istediğiniz tüm uygulamalar için aynı tanımlayıcıyı kullanın.
  2. Her uygulamada erişim grubunu, önceki adımda oluşturduğunuz anahtar zinciri erişim grubuna veya uygulama grubuna ayarlayın.

    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];
    
  3. En az bir uygulamada, herhangi bir oturum açma yöntemiyle bir kullanıcının oturumunu açın.

    Swift

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

    Objective-C

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

    Erişim grubundaki tüm uygulamalarda aynı mevcut kullanıcı kullanılabilir.

    Swift

    var user = Auth.auth().currentUser
    

    Objective-C

    FIRUser *user = FIRAuth.auth.currentUser;
    

Paylaşılmamış bir anahtarlığa geri dönme

  1. Kimlik doğrulama durumunu paylaşmayı durdurmak için erişim grubunu nil olarak ayarlayın.

    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];
    
  2. Herhangi bir oturum açma yöntemiyle kullanıcının oturumunu açın. Kullanıcı durumu diğer uygulamalar tarafından kullanılamaz.

    Swift

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

    Objective-C

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

Oturum açmış bir kullanıcıyı ortak bir anahtar zincirine taşıma

Paylaşılan durumda oturum açmış bir kullanıcıyı taşımak için:

  1. Gelecekte kullanmak üzere mevcut kullanıcıya atıfta bulunun.

    Swift

    var user = Auth.auth().currentUser
    

    Objective-C

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (İsteğe bağlı) Paylaşmak istediğiniz erişim grubunun yetkilendirme durumunu kontrol edin.

    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
    }
    
  3. Daha önce proje ayarlarında belirlediğiniz bir erişim grubunu kullanın.

    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];
    
  4. Geçerli kullanıcıyı güncelleyin.

    Swift

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

    Objective-C

    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. Kullanıcıya artık aynı erişim grubuna erişimi olan diğer uygulamalar da erişebilir.