Buka konsol

Melakukan Autentikasi dengan Firebase secara Anonim Menggunakan C++

Anda dapat menggunakan Firebase Authentication untuk membuat dan menggunakan akun anonim sementara untuk melakukan autentikasi dengan Firebase. Dengan akun anonim sementara ini, pengguna yang belum mendaftar ke aplikasi Anda dapat bekerja dengan data yang dilindungi oleh aturan keamanan. Jika pengguna anonim memutuskan untuk mendaftar ke aplikasi Anda, hubungkan kredensial login mereka ke akun anonim agar mereka dapat terus menangani data yang dilindungi pada sesi-sesi selanjutnya.

Sebelum memulai

  1. Tambahkan Firebase ke project C++ Anda.
  2. Pada file build.gradle tingkat project, pastikan untuk menyertakan repositori Maven Google di bagian buildscript dan allprojects Anda.
  3. Jika Anda belum menghubungkan aplikasi ke project Firebase, lakukanlah dari Firebase console.
  4. Aktifkan autentikasi anonim:
    1. Di Firebase console, buka bagian Auth.
    2. Di halaman Metode Login, aktifkan metode login Anonim.

Melakukan autentikasi dengan Firebase secara anonim

Ketika pengguna yang tidak login menggunakan fitur aplikasi yang mengharuskan autentikasi dengan Firebase, buat agar pengguna tersebut login secara anonim dengan mengikuti langkah-langkah berikut:

Kelas Auth adalah gateway untuk semua panggilan API.
  1. Tambahkan file header Auth dan Aplikasi:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. Pada kode inisialisasi Anda, buat class firebase::App.
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. Dapatkan kelas firebase::auth::Auth untuk firebase::App Anda. Terdapat fungsi pemetaan satu-satu antara App dan Auth.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Panggil Auth::SignInAnonymously.
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • Jika program Anda memiliki loop update yang berjalan secara teratur (misalnya 30 atau 60 kali per detik), Anda bisa memeriksa hasilnya satu kali per update dengan Auth::SignInAnonymouslyLastResult:
    firebase::Future<firebase::auth::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    Atau, jika program Anda dikendalikan oleh peristiwa, Anda bisa memilih untuk mendaftarkan callback pada Future.
  • Mengubah akun anonim menjadi akun permanen

    Ketika pengguna anonim mendaftar ke aplikasi, Anda dapat mengizinkan mereka melanjutkan apa yang mereka lakukan sebelum akun baru dibuat—misalnya, Anda dapat membuat item, yang mereka tambahkan ke keranjang belanja sebelum mendaftar, tetap tersedia di keranjang belanja akun barunya. Caranya, ikuti langkah-langkah berikut:

    1. Ketika pengguna mendaftar, selesaikan alur login untuk penyedia autentikasi yang digunakan pengguna tersebut hingga, tetapi tidak termasuk, tahap memanggil salah satu metode Auth::SignInWith. Misalnya, mendapatkan token ID Google, token akses Facebook, atau alamat email dan sandi pengguna tersebut.
    2. Dapatkan auth::Credential untuk penyedia autentikasi yang baru:

      Login dengan Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Login dengan Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      Login dengan email-sandi
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Teruskan objek auth::Credential ke metode LinkWithCredential dari pengguna yang login:

      // Link the new credential to the currently active user.
      firebase::auth::User* current_user = auth->current_user();
      firebase::Future<firebase::auth::User*> result =
          current_user->LinkWithCredential(credential);
      

    Jika panggilan ke LinkWithCredential berhasil, akun baru pengguna dapat mengakses data Firebase di akun anonim.

    Langkah berikutnya

    Setelah pengguna dapat melakukan autentikasi dengan Firebase, Anda dapat mengontrol aksesnya ke database Firebase menggunakan aturan Firebase.