Check out what’s new from Firebase at Google I/O 2022. Learn more

C++ Kullanarak Anonim Olarak Firebase ile Kimlik Doğrulama

Firebase ile kimlik doğrulaması yapmak üzere 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ıyla 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 edebilmeleri için oturum açma kimlik bilgilerini anonim hesaba bağlayabilirsiniz .

Sen başlamadan önce

  1. Firebase'i C++ projenize ekleyin .
  2. Uygulamanızı henüz Firebase projenize bağlamadıysanız, bunu Firebase konsolundan yapın.
  3. Anonim yetkilendirmeyi etkinleştir:
    1. Firebase konsolunda , Yetkilendirme bölümünü açın.
    2. Oturum Açma Yöntemleri sayfasında, Anonim oturum açma yöntemini etkinleştirin.

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ıda anonim olarak oturum açın:

Auth sınıfı, tüm API çağrıları için ağ geçididir.
  1. Yetkilendirme ve Uygulama başlık dosyalarını ekleyin:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. Başlatma kodunuzda bir firebase::App sınıfı oluşturun.
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. firebase::App için firebase::auth::Auth sınıfını edinin. App ve Auth arasında bire bir eşleme var.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Auth::SignInAnonymously .
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • Programınız düzenli olarak çalışan bir güncelleme döngüsüne sahipse (örneğin saniyede 30 veya 60 kez), sonuçları güncelleme başına bir kez Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    ile kontrol edebilirsiniz Veya programınız olay odaklıysa, tercih edebilirsiniz. Gelecek hakkında bir geri arama kaydetmek için .
  • Anonim bir hesabı kalıcı bir hesaba dönüştürün

    Anonim bir kullanıcı uygulamanıza kaydolduğunda, yeni hesaplarıyla çalışmalarına devam etmelerine izin vermek isteyebilirsiniz; örneğin, kullanıcının kaydolmadan önce alışveriş sepetine eklediği ürünleri yeni hesapları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ı Auth::SignInWith yöntemlerinden birinin çağrılması dahil ancak buna kadar tamamlayın. Örneğin, kullanıcının Google ID 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 auth::Credential alın:

      Google Girişi l10n
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Facebook Girişi
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      E-posta-şifre girişi
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. auth::Credential nesnesini oturum açan kullanıcının LinkWithCredential yöntemine iletin:

      // Link the new credential to the currently active user.
      firebase::auth::User* current_user = auth->current_user();
      firebase::Future<firebase::auth::User*> result =
          current_user->LinkWithCredential(credential);
      

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

    Sonraki adımlar

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