Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Özel Kimlik Doğrulama Sistemi ve C++ Kullanarak Firebase ile Kimlik Doğrulama

Bir kullanıcı başarıyla oturum açtığında, kimlik doğrulama sunucunuzu özel imzalı jetonlar üretecek şekilde değiştirerek Firebase Kimlik Doğrulamayı özel bir kimlik doğrulama sistemiyle entegre edebilirsiniz. Uygulamanız bu jetonu alır ve Firebase ile kimlik doğrulaması yapmak için kullanır.

Sen başlamadan önce

  1. C ++ projeye Firebase ekleyin .
  2. Projenizin sunucu anahtarlarını alın:
    1. Git Hizmet Hesapları projenizin ayarlarında sayfanın.
    2. Hizmet Hesapları sayfasının Firebase Yönetici SDK bölümünün altındaki Yeni Özel Anahtarı üret tıklayın.
    3. Yeni hizmet hesabının genel/özel anahtar çifti otomatik olarak bilgisayarınıza kaydedilir. Bu dosyayı kimlik doğrulama sunucunuza kopyalayın.

Firebase ile kimlik doğrulaması yapın

Auth sınıfı tüm API çağrıları için kapıdır.
  1. Auth ve App başlık dosyalarını ekleyin:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. Senin başlatma kodunda, bir oluşturmak firebase::App sınıfı.
    #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. Edinme firebase::auth::Auth sizin için sınıf firebase::App . Arasında bire-bir eşleme vardır App ve Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
Çağrı Auth::SignInWithCustomToken kimlik doğrulama sunucusundan belirteç ile.
  1. Kullanıcılar uygulamanızda oturum açtığında, oturum açma kimlik bilgilerini (örneğin, kullanıcı adları ve parolaları) kimlik doğrulama sunucunuza gönderin. Sunucu kontrolleri kimlik bilgilerini ve döner bir belirteç özel geçerli olup olmadığını.
  2. Kimlik doğrulama sunucusundan belirteci özel aldıktan sonra onu geçmek Auth::SignInWithCustomToken kullanıcıyla oturum için:
    firebase::Future<firebase::auth::User*> result =
        auth->SignInWithCustomToken(custom_token);
    
  3. Programınız düzenli çalışır (saniyede 30 veya 60 kez söylemek) o bir güncelleme döngüsü var ise, bir kere ile güncelleme başına sonuçları kontrol edebilirsiniz Auth::SignInWithCustomTokenLastResult :
    firebase::Future<firebase::auth::User*> result =
        auth->SignInWithCustomTokenLastResult();
    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());
      }
    }
    
    program olayı tahrik edilmektedir Ya da, eğer tercih edebilir için Geleceğe bir geri arama kayıt .

Sonraki adımlar

Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı oluşturulur ve oturum açtığı kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcısı bilgileri gibi kimlik bilgilerine bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığından bağımsız olarak projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.

  • Senin uygulamalarda, gelen kullanıcının temel profil bilgileri alabilirsiniz firebase::auth::User nesnesi:

    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      std::string name = user->display_name();
      std::string email = user->email();
      std::string photo_url = user->photo_url();
      // The user's ID, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server,
      // if you have one. Use firebase::auth::User::Token() instead.
      std::string uid = user->uid();
    }
    
  • Senin Firebase Gerçek Zamanlı Veritabanı ve Bulut Depolama yılında Güvenlik Kuralları , alabilirsiniz, kullanıcının benzersiz bir kullanıcı kimliği imzalı auth değişkeni ve hangi verilerin kullanıcı teneke erişimi kontrol etmek için kullanabilirsiniz.

Kullanıcıların birden çok kimlik doğrulama sağlayıcıları kullanarak uygulamada oturum izin verebilir mevcut bir kullanıcı hesabına auth sağlayıcı kimlik bilgilerini birbirine bağlayan.

Bir kullanıcı Oturumu kapatmak için çağrı SignOut() :

auth->SignOut();