Catch up on highlights from Firebase at Google I/O 2023. Learn more

Apple Platformlarında Anonim Olarak Firebase ile Kimlik Doğrulama

Firebase ile kimlik doğrulaması yapmak için geçici anonim hesaplar oluşturmak ve kullanmak için Firebase Authentication'ı kullanabilirsiniz. Bu geçici anonim hesaplar, uygulamanıza henüz kaydolmamış kullanıcıların güvenlik kuralları tarafından korunan verilerle çalışmasına izin vermek için kullanılabilir. Anonim bir kullanıcı uygulamanıza kaydolmaya karar verirse, gelecekteki oturumlarda korunan verileriyle çalışmaya devam edebilmesi için oturum açma kimlik bilgilerini anonim hesaba bağlayabilirsiniz .

Sen başlamadan önce

Firebase bağımlılıklarını kurmak ve yönetmek için Swift Paket Yöneticisi'ni kullanın.

  1. Xcode'da, uygulama projeniz açıkken File > Add Packages seçeneğine gidin.
  2. İstendiğinde, Firebase Apple platformları SDK deposunu ekleyin:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Firebase Kimlik Doğrulaması kitaplığını seçin.
  5. Bittiğinde, Xcode otomatik olarak arka planda bağımlılıklarınızı çözmeye ve indirmeye başlayacaktır.

Ardından, bazı yapılandırma adımlarını gerçekleştirin:

  1. Uygulamanızı henüz Firebase projenize bağlamadıysanız, bunu Firebase konsolundan yapın.
  2. Anonim kimlik doğrulamayı etkinleştir:
    1. Firebase konsolunda Kimlik Doğrulama bölümünü açın.
    2. Oturum Açma Yöntemleri sayfasında, Anonim oturum açma yöntemini etkinleştirin.
    3. İsteğe bağlı : Otomatik temizlemeyi etkinleştirin. Bu ayarı etkinleştirdiğinizde, 30 günden eski anonim hesaplar otomatik olarak silinecektir. Otomatik temizlemenin etkinleştirildiği projelerde, anonim kimlik doğrulama artık kullanım limitlerine veya faturalandırma kotalarına dahil edilmeyecektir. Bkz. Otomatik temizleme .

Firebase ile anonim olarak kimlik doğrulaması yapın

Oturumu kapatmış bir kullanıcı, Firebase ile kimlik doğrulaması gerektiren bir uygulama özelliği kullandığında, aşağıdaki adımları tamamlayarak kullanıcının oturumunu anonim olarak açın:

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

    SwiftUI

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

    Süratli

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Amaç-C

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

    SwiftUI

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

    Süratli

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

    Amaç-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. SwiftUI kullanıyorsanız, bir uygulama temsilcisi oluşturmalı ve bunu UIApplicationDelegateAdaptor veya NSApplicationDelegateAdaptor aracılığıyla App yapınıza eklemelisiniz. Uygulama temsilcisi swizzling'i de devre dışı bırakmalısınız. Daha fazla bilgi için SwiftUI talimatlarına bakın.

    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:

    Süratli

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

    Amaç-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:

    Süratli

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

    Amaç-C

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

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

Anonim bir kullanıcı uygulamanıza kaydolduğunda, yeni hesabıyla çalışmalarına devam etmesine izin vermek isteyebilirsiniz; örneğin, kullanıcının kaydolmadan önce alışveriş sepetine eklediği ürünleri yeni hesabında kullanılabilir hale getirmek isteyebilirsiniz. hesabın alışveriş sepeti. Bunu yapmak için aşağıdaki adımları tamamlayın:

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

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

    Süratli
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    
    Amaç-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

Firebase konsolunda otomatik temizlemeyi etkinleştirdiğinizde, 30 günden eski anonim hesaplar otomatik olarak silinir. Bu ayarın etkinleştirilmesi, kullanıcı veritabanınızın kullanılmayan hesaplarla dolmasını engeller. Otomatik temizlemenin etkinleştirildiği projelerde, anonim kimlik doğrulama, kullanım sınırlarına veya faturalandırma kotalarına dahil edilmeyecektir.

  • Otomatik temizleme etkinleştirildikten sonra oluşturulan anonim hesaplar, oluşturulduktan 30 gün sonra silinecektir.
  • Otomatik temizleme etkinleştirilmeden önce oluşturulan anonim hesaplar, otomatik temizleme etkinleştirildikten yaklaşık 30 gün sonra silinir.
  • Otomatik temizlemeyi kapatırsanız, silinmesi programlanan tüm anonim hesaplar, silinmek üzere programlanmış 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'a yükselttiyseniz, Cloud Logging'de is_anon göre filtreleme yapabilirsiniz.

Sonraki adımlar

Artık kullanıcılar Firebase ile kimlik doğrulaması yapabildiğine göre, Firebase kurallarını kullanarak Firebase veritabanınızdaki verilere erişimlerini kontrol edebilirsiniz.