Google Siyah toplulukları için ırksal eşitlik ilerleyen kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Google oturum açma ve kullanma C kimlik doğrulaması ++

Sen Kullanıcıların uygulamanızın içine Google oturum açma entegre ederek kendi Google Hesaplarını kullanarak Firebase ile kimlik doğrulaması sağlayabilirsiniz.

Sen başlamadan önce

  1. C ++ projeye Firebase ekleyin .
  2. Projeniz düzeyi olarak build.gradle dosyası, sizin hem de Google'ın Maven'in depo eklemeyi unutmayın buildscript ve allprojects bölümleri.
  3. Firebase konsolunda Google Sign-In etkinleştirme:
    1. In Firebase konsoluna , Auth bölümünü açın.
    2. Yöntem sekmede yap, Google oturum açma yöntemine etkinleştirmek ve Kaydet'i tıklayın.

Erişim firebase::auth::Auth sınıfını

Auth sınıfı tüm API çağrıları için kapıdır.
  1. Auth ve App başlık dosyaları 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);
    

Firebase ile kimlik doğrulaması

  1. İçin yönergeleri izleyin Android ve iOS Google işareti belirteci bir kimlik edinmeniz.
  2. Bir kullanıcı sonra başarıyla oturum Firebase Firebase kimlik bilgilerini kullanarak bir Firebase kimlik bilgisi belirteci kimliği ve kimlik doğrulaması alışverişi:
    firebase::auth::Credential credential =
        firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                          nullptr);
    firebase::Future<firebase::auth::User*> result =
        auth->SignInWithCredential(credential);
    
  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::SignInWithCredentialLastResult :
    firebase::Future<firebase::auth::User*> result =
        auth->SignInWithCredentialLastResult();
    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ınız olay sürülüyorsa Ya da, tercih edebilir Geleceği Üzerine Bir geri arama kayıt .

Bir Geleceğe bir geri arama Kayıt

Bazı programlar var Update saniyede 30 veya 60 kez denir işlevleri. Örneğin, birçok oyun bu modeli takip edin. Bu programlar çağırabilir LastResult asenkron aramaları yoklamak için işlevler. Programınız olay sürülüyorsa Ancak, geri arama işlevleri kayıt tercih edebilirsiniz. Bir geri arama işlevi Geleceğin tamamlanması üzerine adlandırılır.
void OnCreateCallback(const firebase::Future<firebase::auth::User*>& result,
                      void* user_data) {
  // The callback is called when the Future enters the `complete` state.
  assert(result.status() == firebase::kFutureStatusComplete);

  // Use `user_data` to pass-in program context, if you like.
  MyProgramContext* program_context = static_cast<MyProgramContext*>(user_data);

  // Important to handle both success and failure situations.
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::User* user = *result.result();
    printf("Create user succeeded for email %s\n", user->email().c_str());

    // Perform other actions on User, if you like.
    firebase::auth::User::UserProfile profile;
    profile.display_name = program_context->display_name;
    user->UpdateUserProfile(profile);

  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

void CreateUser(firebase::auth::Auth* auth) {
  // Callbacks work the same for any firebase::Future.
  firebase::Future<firebase::auth::User*> result =
      auth->CreateUserWithEmailAndPasswordLastResult();

  // `&my_program_context` is passed verbatim to OnCreateCallback().
  result.OnCompletion(OnCreateCallback, &my_program_context);
}
İsterseniz geri çağırma işlevi de, bir lambda olabilir.
void CreateUserUsingLambda(firebase::auth::Auth* auth) {
  // Callbacks work the same for any firebase::Future.
  firebase::Future<firebase::auth::User*> result =
      auth->CreateUserWithEmailAndPasswordLastResult();

  // The lambda has the same signature as the callback function.
  result.OnCompletion(
      [](const firebase::Future<firebase::auth::User*>& result,
         void* user_data) {
        // `user_data` is the same as &my_program_context, below.
        // Note that we can't capture this value in the [] because std::function
        // is not supported by our minimum compiler spec (which is pre C++11).
        MyProgramContext* program_context =
            static_cast<MyProgramContext*>(user_data);

        // Process create user result...
        (void)program_context;
      },
      &my_program_context);
}

Sonraki adımlar

ilk defa bir oturum açtıktan sonra yeni bir kullanıcı hesabı oluşturulur ve kimlik bilgileri-olduğu, kullanıcı adı ve şifre, telefon numarası veya oturum açmış yetkilendirme sağlayıcı bilgileri kullanıcıya bağlı. Bu yeni hesap Firebase projesinin bir parçası olarak depolanır ve bakılmaksızın nasıl kullanıcı işaretleri, projenizde her uygulamanıza 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();