Kullanıcıların e-posta adresi ve şifreyle oturum açma gibi bir veya daha fazla oturum açma yöntemiyle ve Google ile Oturum Açma ve Facebook ile Giriş gibi birleşik kimlik sağlayıcılarla uygulamanızda oturum açmasına izin vermek için Firebase Authentication kullanabilirsiniz. Bu eğitimde, uygulamanıza e-posta adresi ve şifreyle oturum açma özelliğini nasıl ekleyeceğiniz gösterilerek Firebase Authentication ile çalışmaya başlamanıza yardımcı olunur.
C++ projenizi Firebase'e bağlama
Firebase Authentication özelliğini kullanabilmek için:
C++ projenizi kaydedin ve Firebase'i kullanacak şekilde yapılandırın.
C++ projeniz Firebase'i kullanıyorsa Firebase için zaten kaydedilmiş ve yapılandırılmıştır.
C++ projenize Firebase C++ SDK'sını ekleyin.
Firebase'i C++ projenize eklemek için hem Firebase konsolda hem de açık C++ projenizde görevler yapmanız gerektiğini unutmayın (örneğin, Firebase yapılandırma dosyalarını konsoldan indirip C++ projenize taşırsınız).
Yeni kullanıcıları kaydetme
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ının sağladığı e-posta adresini ve şifreyi doğrulayın, 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 nesnesinde geri çağırma kaydettirerek veya belirli aralıklarla güncelleme döngüsü olan bir oyun ya da uygulama yazıyorsanız güncelleme döngüsünde durumu yoklayarak kontrol edebilirsiniz.
Örneğin, Future'ı kullanma:
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);
Yoklama kullanmak için oyununuzun güncelleme döngüsünde aşağıdaki örneğe benzer bir işlem 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 oturum açmasını sağlama
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 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 dinleyicisi ayarlama ve hesap verilerini alma
Oturum açma ve kapatma etkinliklerine yanıt vermek için genel kimlik doğrulama nesnesine bir işleyici ekleyin. Bu dinleyici, kullanıcının oturum açma durumu her değiştiğinde çağrılır. Dinleyici yalnızca kimlik doğrulama nesnesi tamamen başlatıldıktan ve tüm ağ aramaları tamamlandıktan sonra çalıştığı için oturum açmış kullanıcı hakkında bilgi almak için en iyi yerdir.
firebase::auth::AuthStateListener
abstract sınıfını uygulayarak dinleyiciyi oluşturun. Örneğin, bir kullanıcı başarıyla oturum açtığında kullanıcıyla ilgili bilgileri 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 destek ekleme hakkında bilgi edinin: