C++'da Firebase Kimlik Doğrulamasına Başlayın

Kullanıcıların, e-posta adresi ve şifreyle oturum açma dahil bir veya daha fazla oturum açma yöntemini ve Google Oturum Açma ve Facebook Oturum Açma gibi birleştirilmiş kimlik sağlayıcılarını kullanarak uygulamanızda oturum açmasına izin vermek için Firebase Authentication'ı kullanabilirsiniz. Bu eğitim, uygulamanıza e-posta adresi ve parolayla oturum açmayı nasıl ekleyeceğinizi göstererek Firebase Authentication'ı kullanmaya başlamanızı sağlar.

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

Firebase Authentication'ı kullanabilmeniz için şunları yapmanız gerekir:

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

    C++ projeniz zaten Firebase kullanıyorsa Firebase için zaten kayıtlı ve yapılandırılmış demektir.

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

Firebase'i C++ projenize eklemenin hem Firebase konsolundaki hem de açık C++ projenizdeki görevleri içerdiğini unutmayın (örneğin, Firebase yapılandırma dosyalarını konsoldan indirir ve ardından bunları C++ projenize taşırsınız).

Yeni kullanıcılar kaydedin

Yeni kullanıcıların e-posta adreslerini ve şifrelerini kullanarak uygulamanıza kaydolmalarına olanak tanıyan bir form oluşturun. Kullanıcı formu doldurduğunda, kullanıcı tarafından sağlanan e-posta adresini ve şifreyi doğrulayın ve ardından bunları CreateUserWithEmailAndPassword yöntemine iletin:

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

Hesap oluşturma işleminin durumunu CreateUserWithEmailAndPasswordLastResult Future nesnesine bir geri arama kaydederek veya bir tür periyodik güncelleme döngüsüne sahip bir oyun veya uygulama yazıyorsanız güncelleme döngüsündeki durumu yoklayarak kontrol edebilirsiniz.

Örneğin, bir Gelecek kullanarak:

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);

Veya yoklamayı kullanmak için oyununuzun güncelleme döngüsünde aşağıdaki örneğe benzer bir şey yapın:

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ılarda oturum açın

Mevcut kullanıcıların e-posta adreslerini ve şifrelerini kullanarak oturum açmalarına olanak tanıyan bir form oluşturun. Kullanıcı formu tamamladığında SignInWithEmailAndPassword yöntemini çağırın:

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

Kayıt sonucunu aldığınız gibi, oturum açma işleminin sonucunu da alın.

Kimlik doğrulama durumu dinleyicisini ayarlayın ve hesap verilerini alın

Oturum açma ve oturum kapatma olaylarına yanıt vermek için genel kimlik doğrulama nesnesine bir dinleyici ekleyin. Bu dinleyici, kullanıcının oturum açma durumu değiştiğinde çağrılır. Dinleyici yalnızca kimlik doğrulama nesnesi tamamen başlatıldıktan ve tüm ağ çağrıları tamamlandıktan sonra çalıştığından, oturum açan kullanıcı hakkında bilgi almak için en iyi yerdir.

firebase::auth::AuthStateListener soyut sınıfını uygulayarak dinleyiciyi oluşturun. Örneğin, kullanıcı başarıyla oturum açtığında kullanıcı hakkında bilgi alan bir dinleyici oluşturmak için:

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");
    }
    // ...
  }
};

Dinleyiciyi firebase::auth::Auth nesnesinin AddAuthStateListener yöntemiyle ekleyin:

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

Sonraki adımlar

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