Anda dapat menggunakan Firebase Authentication untuk mengizinkan pengguna login ke aplikasi Anda menggunakan satu atau beberapa metode login, termasuk login dengan alamat email dan sandi, serta penyedia identitas gabungan seperti Login dengan Google dan Login dengan Facebook. Tutorial ini akan memandu Anda memulai Firebase Authentication dengan menunjukkan cara menambahkan login dengan alamat email dan sandi ke aplikasi Anda.
Menghubungkan project C++ Anda ke Firebase
Sebelum dapat menggunakan Firebase Authentication, Anda perlu:
Mendaftarkan project C++ Anda dan mengonfigurasinya agar menggunakan Firebase.
Jika project C++ Anda telah menggunakan Firebase, berarti project tersebut telah terdaftar dan dikonfigurasi untuk Firebase.
Menambahkan Firebase C++ SDK ke project C++ Anda.
Perlu diperhatikan bahwa penambahan Firebase ke project C++ Anda memerlukan tindakan baik di Firebase console maupun di project C++ yang terbuka (misalnya, Anda mendownload file konfigurasi Firebase dari konsol, lalu memindahkannya ke project C++).
Mendaftarkan pengguna baru
Buat formulir yang memungkinkan pengguna baru mendaftar ke aplikasi Anda menggunakan alamat email dan sandinya. Saat pengguna mengisi formulir, validasi alamat email dan sandi yang diberikan oleh pengguna, lalu teruskan ke metode CreateUserWithEmailAndPassword
:
firebase::Future<firebase::auth::AuthResult> result =
auth->CreateUserWithEmailAndPassword(email, password);
Anda dapat memeriksa status operasi pembuatan akun dengan mendaftarkan callback pada objek Future CreateUserWithEmailAndPasswordLastResult
, atau, jika Anda menulis game atau aplikasi dengan semacam loop update berkala melalui polling status di loop update.
Misalnya, menggunakan Future:
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);
Atau, untuk menggunakan polling, lakukan sesuatu seperti contoh berikut di loop update game Anda:
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());
}
}
Memasukkan pengguna yang sudah terdaftar
Buat formulir yang dapat dipakai pengguna yang ada untuk login menggunakan alamat email dan sandinya. Setelah pengguna melengkapi formulir, panggil metode SignInWithEmailAndPassword
:
firebase::Future<firebase::auth::AuthResult> result =
auth->SignInWithEmailAndPassword(email, password);
Dapatkan hasil operasi login dengan menggunakan cara yang sama seperti untuk mendapatkan hasil pendaftaran.
Menyetel pemroses status autentikasi dan mendapatkan data akun
Untuk merespons peristiwa login dan logout, pasang pemroses ke objek autentikasi global. Pemroses ini akan dipanggil setiap kali status login pengguna berubah. Karena pemroses berjalan hanya setelah objek autentikasi diinisialisasi sepenuhnya dan setelah panggilan jaringan selesai, ini adalah tempat terbaik untuk mendapatkan informasi tentang pengguna yang login.
Buat pemroses dengan menerapkan class abstrak firebase::auth::AuthStateListener
. Misalnya, untuk membuat pemroses yang mendapatkan informasi tentang pengguna saat pengguna berhasil login:
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");
}
// ...
}
};
Lampirkan pemroses dengan metode AddAuthStateListener
objek firebase::auth::Auth
:
MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);
Langkah berikutnya
Pelajari cara menambahkan dukungan untuk penyedia identitas lainnya dan akun tamu anonim: