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

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

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

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

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

    C++ projeniz zaten Firebase'i kullanıyorsa Firebase için kaydedilmiş 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 gerektirdiğini unutmayın (örneğin, Firebase yapılandırma dosyalarını konsoldan indirip C++ projenize taşırsınız).

Yeni kullanıcılar için kaydolma

Yeni kullanıcıların e-posta adreslerini ve şifrelerini kullanarak uygulamanıza kaydolmalarını sağlayan bir form oluşturun. Kullanıcı formu doldurduğunda kullanıcının sağladığı e-posta adresini ve şifreyi doğrulayın, ardından bu bilgileri CreateUserWithEmailAndPassword yöntemine iletin:

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

CreateUserWithEmailAndPasswordLastResult Gelecek nesnesine bir geri çağırma kaydederek veya düzenli güncelleme döngüsü olan bir oyun veya uygulama yazıyorsanız hesap oluşturma işleminin durumunu güncelleme döngüsünde anket yaparak hesap oluşturma işleminin durumunu kontrol edebilirsiniz.

Ö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, 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ıların oturumunu açma

Mevcut kullanıcıların e-posta adreslerini ve şifrelerini kullanarak oturum açmasına izin veren bir form oluşturun. Kullanıcı formu doldurduğunda SignInWithEmailAndPassword yöntemini çağırın:

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 genel kimlik doğrulama nesnesine bir işleyici ekleyin. Bu işleyici, kullanıcının oturum açma durumu her değiştiğinde çağrılır. İşleyici yalnızca kimlik doğrulama nesnesi tamamen başlatıldıktan ve ağ çağrıları tamamlandıktan sonra çalıştığından, oturum açmış kullanıcıyla ilgili bilgi almak için en iyi yerdir.

firebase::auth::AuthStateListener soyut sınıfını uygulayarak işleyiciyi oluşturun. Örneğin, bir kullanıcı başarıyla oturum açtığında kullanıcı hakkında bilgi alan bir işleyici 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");
    }
    // ...
  }
};

İşleyiciyi, 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 misafir hesapları için nasıl destek ekleyeceğinizi öğrenin: