Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Melakukan Autentikasi dengan Firebase secara Anonim Menggunakan C++

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

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 menggunakan data yang dilindungi oleh aturan keamanan. Jika pengguna anonim memutuskan untuk mendaftar ke aplikasi Anda, tautkan kredensial login mereka ke akun anonim tersebut agar mereka dapat terus menggunakan data yang dilindungi tersebut pada sesi-sesi selanjutnya.

Sebelum memulai

  1. Tambahkan Firebase ke project C++ Anda.
  2. Jika Anda belum menghubungkan aplikasi ke project Firebase, lakukanlah dari Firebase console.
  3. Aktifkan autentikasi anonim:
    1. Di Firebase console, buka bagian Authentication.
    2. Di halaman Sign-in Methods, aktifkan metode login Anonymous.
    3. Opsional: Jika telah mengupgrade project ke Firebase Authentication dengan Identity Platform, Anda dapat mengaktifkan pembersihan otomatis. Saat setelan ini diaktifkan, akun anonim yang berusia lebih dari 30 hari akan otomatis dihapus. Dalam project yang mengaktifkan pembersihan otomatis, autentikasi anonim tidak akan lagi diperhitungkan dalam batas penggunaan atau kuota penagihan. Lihat Pembersihan otomatis.

Melakukan autentikasi dengan Firebase secara anonim

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

Class 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 class firebase::auth::Auth untuk firebase::App Anda. Terdapat fungsi pemetaan one-to-one 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 dapat 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 aktivitas dengan akun yang baru dibuat. Misalnya, Anda dapat mempertahankan item yang ditambahkan pengguna sebelum mendaftar agar tetap berada di keranjang belanja pada akun baru mereka. Caranya, ikuti langkah-langkah berikut:

    1. Ketika pengguna mendaftar, selesaikan alur login untuk penyedia autentikasi pengguna tersebut hingga, tetapi sebelum, memanggil salah satu metode Auth::SignInWith. Misalnya, dapatkan token ID Google, token akses Facebook, atau alamat email dan sandi pengguna tersebut.
    2. Dapatkan auth::Credential untuk penyedia autentikasi 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 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 akun anonim.

    Pembersihan otomatis

    Jika Anda telah mengupgrade project ke Firebase Authentication dengan Identity Platform, Anda dapat mengaktifkan pembersihan otomatis di Firebase console. Jika fitur ini diaktifkan, Firebase akan otomatis menghapus akun anonim yang sudah lebih dari 30 hari. Dalam project yang mengaktifkan pembersihan otomatis, autentikasi anonim tidak akan diperhitungkan dalam batas penggunaan atau kuota penagihan.

    • Setiap akun anonim yang dibuat setelah pembersihan otomatis diaktifkan mungkin akan otomatis dihapus kapan saja setelah 30 hari pasca-pembuatannya.
    • Akun anonim yang dibuat sebelum pembersihan otomatis diaktifkan akan memenuhi syarat untuk penghapusan otomatis mulai 30 hari setelah fitur ini diaktifkan.
    • Jika Anda menonaktifkan pembersihan otomatis, akun anonim yang dijadwalkan untuk dihapus akan tetap dijadwalkan untuk dihapus. Akun ini tidak diperhitungkan dalam batas penggunaan atau kuota penagihan.
    • Jika Anda "mengupgrade" akun anonim dengan menautkannya ke metode login apa pun, akun tersebut tidak akan otomatis dihapus.

    Jika ingin melihat jumlah pengguna yang akan terpengaruh sebelum Anda mengaktifkan fitur ini, dan Anda telah mengupgrade project ke Firebase Authentication dengan Identity Platform, Anda dapat memfilter berdasarkan is_anon di Cloud Logging.

    Langkah berikutnya

    Setelah pengguna dapat melakukan autentikasi dengan Firebase, Anda dapat mengontrol akses mereka ke data di database Firebase Anda menggunakan aturan Firebase.