C++'ta Firebase Authentication'ı Kullanmaya Başlama

Kullanıcıların uygulamanızda oturum açmalarına izin vermek için Firebase Authentication kullanabilirsiniz e-posta adresi ve şifreyle oturum açma gibi diğer oturum açma yöntemlerini ve Google ile Oturum Açma ve Facebook Girişi gibi birleşik kimlik sağlayıcılar. Bu nasıl ekleyeceğinizi göstererek Firebase Authentication kullanmaya başlamanızı sağlar e-posta adresi ve şifreyle oturum açmanız gerekir.

C++ projenizi Firebase'e bağlayın

Kullanmadan önce Firebase Authentication Yapmanız gerekenler:

  • C++ projenizi kaydedin ve Firebase'i kullanacak şekilde yapılandırın.

    C++ projeniz zaten Firebase'i kullanıyorsa zaten kayıtlıdır ve Firebase için yapılandırıldı.

  • Firebase C++ SDK'sını C++ projenize ekleyin.

ziyaret edin.

Firebase'i C++ projenize eklediğinizde, hem Firebase konsolunda ve açık C++ projenizde (örneğin, Konsoldaki Firebase yapılandırma dosyalarını C++ projenize taşıyın).

Yeni kullanıcılar için kaydolma

Yeni kullanıcıların bir e-posta adresi ve şifre kullanabilirsiniz. Bir kullanıcı formu doldurduğunda tarafından verilen e-posta adresini ve şifreyi alıp CreateUserWithEmailAndPassword yöntem:

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPassword(email, password);

Hesap oluşturma işleminin durumunu, CreateUserWithEmailAndPasswordLastResult Future nesnesinde bir geri çağırma ya da düzenli güncelleme döngüsü olan bir oyun veya uygulama yazıyorsanız durumu güncelleme döngüsünde yoklama.

Örneğin, Future (Gelecek) metriği kullanılarak:

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPasswordLastResult();

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::AuthResult>& 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);

Alternatif olarak, yoklama özelliğini kullanmak için oyununuzun güncelleme döngüsü:

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::AuthResult* auth_result = *result.result();
    printf("Create user succeeded for email %s\n", auth_result.user.email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

Mevcut kullanıcıların oturumunu açma

Mevcut kullanıcıların e-posta adreslerini kullanarak oturum açmasına olanak tanıyan bir form oluşturun ve şifre. Bir kullanıcı formu doldurduğunda SignInWithEmailAndPassword yöntem:

firebase::Future<firebase::auth::AuthResult> result =
    auth->SignInWithEmailAndPassword(email, password);

Oturum açma işleminin sonucunu, kayıt sonucunu aldığınız şekilde alın.

Kimlik doğrulama durumu işleyicisi ayarlama ve hesap verilerini alma

Oturum açma ve oturum kapatma etkinliklerine yanıt vermek için global kimlik doğrulama nesnesini tanımlayın. Bu işleyici, kullanıcı her oturum açtığında çağrılır. kullanabilirsiniz. Çünkü işleyici, yalnızca kimlik doğrulama nesnesi ve tüm ağ çağrıları tamamlandıktan sonra bu hedef her zaman en iyi oturum açmış kullanıcıyla ilgili bilgileri almak için

firebase::auth::AuthStateListener uygulayarak işleyici oluşturun soyut sınıf. Örneğin, isim değişikliğinin tam olarak Kullanıcı başarıyla oturum açtığında kullanıcı:

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 public:
  void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase::auth::User user = auth.current_user();
    if (user.is_valid()) {
      // User is signed in
      printf("OnAuthStateChanged: signed_in %s\n", user.uid().c_str());
      const std::string displayName = user.DisplayName();
      const std::string emailAddress = user.Email();
      const std::string photoUrl = user.PhotoUrl();
    } else {
      // User is signed out
      printf("OnAuthStateChanged: signed_out\n");
    }
    // ...
  }
};

İşleyiciyi firebase::auth::Auth nesnesinin AddAuthStateListener yöntemi:

MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);

Sonraki adımlar

Diğer kimlik sağlayıcılar ve anonim konuklar için nasıl destek ekleyeceğinizi öğrenin hesaplar: