Memulai Firebase Authentication di C++

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 tergabung 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 harus:

  • Mendaftarkan project C++ Anda dan mengonfigurasikannya untuk menggunakan Firebase.

    Jika project C++ Anda telah menggunakan Firebase, berarti project tersebut telah terdaftar dan dikonfigurasikan untuk Firebase.

  • Tambahkan Firebase C++ SDK ke project C++ Anda.

Perlu diperhatikan bahwa menambahkan Firebase ke project C++ Anda melibatkan tugas di Firebase console dan 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. Jika pengguna sudah melengkapi formulir tersebut, validasikan alamat email dan sandi yang diberikan pengguna, lalu teruskan ke metode CreateUserWithEmailAndPassword:

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

Anda bisa memeriksa status operasi pembuatan akun, baik dengan mendaftarkan callback pada objek Future CreateUserWithEmailAndPasswordLastResult atau melalui polling status di loop update, jika Anda menulis game atau aplikasi dengan beberapa jenis loop update secara berkala.

Misalnya, menggunakan Future:

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

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::User*>& 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::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::User* user = *result.result();
    printf("Create user succeeded for email %s\n", user->email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

Membuat pengguna yang ada agar login

Buat formulir yang memungkinkan pengguna yang sudah ada untuk login menggunakan alamat email dan sandinya. Jika pengguna sudah melengkapi formulir tersebut, panggil metode SignInWithEmailAndPassword:

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

Dapatkan hasil operasi login dengan menggunakan cara yang sama seperti untuk mendapatkan hasil pendaftaran.

Menyetel listener status autentikasi dan mendapatkan data akun

Untuk merespons peristiwa login dan logout, pasang listener ke objek autentikasi global. Listener ini akan dipanggil setiap kali status login pengguna berubah. Karena listener berjalan hanya setelah objek autentikasi diinisialisasi sepenuhnya dan setelah panggilan jaringan selesai, ini adalah tempat terbaik untuk mendapatkan informasi tentang pengguna yang login.

Buat listener dengan mengimplementasikan kelas abstrak firebase::auth::AuthStateListener. Misalnya, untuk membuat listener 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 != nullptr) {
      // 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");
    }
    // ...
  }
};

Pasang listener dengan metode firebase::auth::Auth di objek AddAuthStateListener:

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

Langkah berikutnya

Pelajari cara menambahkan dukungan untuk penyedia identitas lainnya dan akun tamu anonim:

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.