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

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:

  1. 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:

    1. Xcode'da Proje ayarları > Yetenekler'e gidin.
    2. Anahtar Zinciri Paylaşımını etkinleştirin.
    3. 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.
  2. 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];
    
  3. 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

  1. 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];
    
  2. 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:

  1. Gelecekte kullanmak üzere mevcut kullanıcıya referans verin.

    Süratli

    var user = Auth.auth().currentUser
    

    Amaç-C

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (İ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
    }
    
  3. 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];
    
  4. 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
    }];
    
  5. Artık kullanıcıya aynı erişim grubuna erişimi olan diğer uygulamalar tarafından erişilebilir.