Apple Platforms'da Firebase ile Anonim olarak kimlik doğrulama

Firebase ile kimlik doğrulaması yapmak için geçici anonim hesaplar oluşturup kullanmak üzere Firebase Authentication hizmetinden yararlanabilirsiniz. Bu geçici anonim hesaplar, uygulamanıza henüz kaydolmamış kullanıcıların güvenlik kurallarıyla korunan verilerle çalışmasına izin vermek için kullanılabilir. Anonim bir kullanıcı uygulamanıza kaydolmaya karar verirse oturum açma kimlik bilgilerini anonim hesaba bağlayabilirsiniz. Böylece kullanıcı, gelecekteki oturumlarda korunan verileriyle çalışmaya devam edebilir.

Başlamadan önce

  1. Firebase bağımlılıklarını yüklemek ve yönetmek için Swift Package Manager'ı kullanın.

    Firebase SDK'larını Apple projenize eklemenin farklı yollarını öğrenmek için
    1. Xcode'da uygulama projeniz açıkken File > Add Packages'a (Dosya > Paket Ekle) gidin.
    2. İstendiğinde Firebase Apple platformları SDK deposunu ekleyin:
    3.   https://github.com/firebase/firebase-ios-sdk.git
    4. Firebase Authentication kitaplığını seçin.
    5. Hedefinizin derleme ayarlarının Other Linker Flags (Diğer Bağlayıcı İşaretleri) bölümüne -ObjC işaretini ekleyin.
    6. İşlem tamamlandığında Xcode, arka planda bağımlılıklarınızı otomatik olarak çözmeye ve indirmeye başlar.
  2. Uygulamanızı Firebase projenize henüz bağlamadıysanız Firebase konsolundan bağlayın.
  3. Anonim kimlik doğrulamayı etkinleştirme:
    1. Firebase Yönetici Konsolu'nda Güvenlik > Kimlik doğrulama'ya gidin.
    2. Sign-in method (Oturum açma yöntemi) sekmesinde Anonymous (Anonim) oturum açma sağlayıcısını etkinleştirin.
    3. İsteğe bağlı: Projenizi Firebase Authentication with Identity Platform'a yükselttiyseniz otomatik temizlemeyi etkinleştirebilirsiniz. Bu ayarı etkinleştirdiğinizde 30 günden eski anonim hesaplar otomatik olarak silinir. Otomatik temizlemenin etkin olduğu projelerde anonim kimlik doğrulama, artık kullanım sınırlarına veya faturalandırma kotalarına dahil edilmeyecek. Otomatik temizleme bölümüne bakın.

Firebase ile anonim olarak kimlik doğrulama

Oturumu kapalı bir kullanıcı, Firebase ile kimlik doğrulama gerektiren bir uygulama özelliğini kullandığında aşağıdaki adımları tamamlayarak kullanıcının anonim olarak oturum açmasını sağlayın:

  1. FirebaseCore modülünü UIApplicationDelegate dosyanıza ve uygulama temsilcinizin kullandığı diğer Firebase modüllerine aktarın. Örneğin, Cloud Firestore ve Authentication kullanmak için:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Uygulama temsilcinizin application(_:didFinishLaunchingWithOptions:) yönteminde paylaşılan bir FirebaseApp örneği yapılandırın:

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. SwiftUI kullanıyorsanız bir uygulama temsilcisi oluşturmanız ve bunu UIApplicationDelegateAdaptor veya NSApplicationDelegateAdaptor aracılığıyla App yapınıza eklemeniz gerekir. Ayrıca uygulama temsilcisi swizzling'ini de devre dışı bırakmanız gerekir. Daha fazla bilgi için SwiftUI talimatlarını inceleyin.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. signInAnonymouslyWithCompletion: yöntemini çağırın:

    Swift

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
  5. signInAnonymouslyWithCompletion: yöntemi hatasız tamamlanırsa anonim kullanıcının hesap verilerini FIRAuthDataResult nesnesinden alabilirsiniz:

    Swift

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid

    Objective-C

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;

Anonim hesabı kalıcı hesaba dönüştürme

Anonim bir kullanıcı uygulamanıza kaydolduğunda, yeni hesabıyla çalışmaya devam etmesine izin vermek isteyebilirsiniz. Örneğin, kullanıcının kaydolmadan önce alışveriş sepetine eklediği öğeleri yeni hesabının alışveriş sepetinde kullanılabilir hale getirmek isteyebilirsiniz. Bunun için aşağıdaki adımları uygulayın:

  1. Kullanıcı kaydolduğunda, kullanıcının kimlik doğrulama sağlayıcısı için oturum açma akışını tamamlayın ancak FIRAuth.signInWith yöntemlerinden birini çağırmayın. Örneğin, kullanıcının Google kimlik jetonunu, Facebook erişim jetonunu veya e-posta adresi ile şifresini alın.
  2. Yeni kimlik doğrulama sağlayıcısı için FIRAuthCredential alın:

    Google ile Oturum Açma
    Swift
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    Objective-C
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString
                                     accessToken:result.user.accessToken.tokenString];
    Facebook Login
    Swift
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    Objective-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    E-posta ve şifreyle oturum açma
    Swift
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    Objective-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
  3. FIRAuthCredential nesnesini, oturum açan kullanıcının linkWithCredential:completion: yöntemine iletin:

    Swift
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    Objective-C
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];

linkWithCredential:completion: çağrısı başarılı olursa kullanıcının yeni hesabı, anonim hesabın Firebase verilerine erişebilir.

Otomatik temizleme

Projenizi Firebase Authentication with Identity Platform'e yükselttiyseniz Firebase konsolunda otomatik temizlemeyi etkinleştirebilirsiniz. Bu özelliği etkinleştirdiğinizde Firebase'in 30 günden eski anonim hesapları otomatik olarak silmesine izin vermiş olursunuz. Otomatik temizlemenin etkin olduğu projelerde anonim kimlik doğrulama, kullanım sınırlarına veya faturalandırma kotalarına dahil edilmez.

  • Otomatik temizleme etkinleştirildikten sonra oluşturulan tüm anonim hesaplar, oluşturulduktan 30 gün sonra herhangi bir zamanda otomatik olarak silinebilir.
  • Mevcut anonim hesaplar, otomatik temizleme etkinleştirildikten 30 gün sonra otomatik olarak silinmeye uygun hale gelir.
  • Otomatik temizlemeyi devre dışı bırakırsanız silinmesi planlanan anonim hesaplar silinmek üzere planlanmış olarak kalır.
  • Anonim bir hesabı herhangi bir oturum açma yöntemine bağlayarak "yükseltirseniz" hesap otomatik olarak silinmez.

Bu özelliği etkinleştirmeden önce kaç kullanıcının etkileneceğini görmek istiyorsanız ve projenizi Firebase Authentication with Identity Platform sürümüne yükselttiyseniz Cloud Logging'de is_anon ölçütüne göre filtreleme yapabilirsiniz.

Sonraki adımlar

Kullanıcılar Firebase ile kimlik doğrulayabildiğine göre Firebase kurallarını kullanarak Firebase veritabanınızdaki verilere erişimlerini kontrol edebilirsiniz.