Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Ö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ğrulamasını özel bir kimlik doğrulama sistemi ile entegre edebilirsiniz. Uygulamanız bu jetonu alır ve Firebase ile kimlik doğrulaması için kullanır.

Sen başlamadan önce

  1. Firebase'i C ++ projenize ekleyin .
  2. Projenizin sunucu anahtarlarını alın:
    1. Projenizin ayarlarında Hizmet Hesapları sayfasına gidin.
    2. Hizmet Hesapları sayfasının Firebase Admin SDK bölümünün altındaki Yeni Özel Anahtar Oluştur'u 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ğrulama

Auth sınıfı, tüm API çağrıları için ağ geçididir.
  1. Auth ve App 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. Edinme firebase::auth::Auth sizin için sınıf firebase::App . App ve Auth arasında bire bir eşleme vardır.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
Auth::SignInWithCustomToken doğrulama sunucunuzdaki belirteçle Auth::SignInWithCustomToken arayın.
  1. Kullanıcılar uygulamanızda oturum açtıklarında, oturum açma kimlik bilgilerini (örneğin, kullanıcı adı ve şifreleri) kimlik doğrulama sunucunuza gönderin. Sunucunuz kimlik bilgilerini kontrol eder ve geçerliyse özel bir belirteç döndürür.
  2. Kimlik doğrulama sunucunuzdan özel belirteci aldıktan sonra, kullanıcıda oturum Auth::SignInWithCustomToken için Auth::SignInWithCustomToken :
    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 birlikte güncelleme başına bir kez, sonuçları kontrol edebilirsiniz Auth::SignInWithCustomTokenLastResult program olay sürülüyorsa
    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());
      }
    }
    
    Ya da, tercih edilebilir: kayıt Gelecek için bir geri arama .

Sonraki adımlar

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

  • Uygulamalarınızda, kullanıcının temel profil bilgilerini firebase::auth::User nesnesinden alabilirsiniz:

    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();
    }
    
  • Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda , oturum auth kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve bir kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

Yetkilendirme sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak , kullanıcıların birden çok kimlik doğrulama sağlayıcısı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz .

Bir kullanıcının oturumunu kapatmak için SignOut() arayın:

auth->SignOut();