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

Otentikasi Menggunakan Microsoft dan C++

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

Anda dapat mengizinkan pengguna Anda mengautentikasi dengan Firebase menggunakan penyedia OAuth seperti Microsoft Azure Active Directory dengan mengintegrasikan OAuth Login generik berbasis web ke dalam aplikasi Anda menggunakan Firebase SDK untuk menjalankan alur masuk menyeluruh. Karena alur ini memerlukan penggunaan SDK Firebase berbasis ponsel, alur ini hanya didukung di platform Android dan Apple.

Sebelum kamu memulai

  1. Tambahkan Firebase ke proyek C++ Anda .
  2. Di Firebase console , buka bagian Auth .
  3. Pada tab Metode masuk , aktifkan penyedia Microsoft .
  4. Tambahkan ID Klien dan Rahasia Klien dari konsol pengembang penyedia itu ke konfigurasi penyedia:
    1. Untuk mendaftarkan klien Microsoft OAuth, ikuti petunjuk di Mulai Cepat: Daftarkan aplikasi dengan titik akhir Azure Active Directory v2.0 . Perhatikan bahwa titik akhir ini mendukung masuk menggunakan akun pribadi Microsoft serta akun Azure Active Directory. Pelajari selengkapnya tentang Azure Active Directory v2.0.
    2. Saat mendaftarkan aplikasi dengan penyedia ini, pastikan untuk mendaftarkan domain *.firebaseapp.com untuk proyek Anda sebagai domain pengalihan untuk aplikasi Anda.
  5. Klik Simpan .

Akses firebase::auth::Auth class

Kelas Auth adalah gerbang untuk semua panggilan API.
  1. Tambahkan file header Auth dan Aplikasi:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. Dalam kode inisialisasi Anda, buat kelas 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. Ada pemetaan satu-ke-satu antara App dan Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    

Tangani alur masuk dengan Firebase SDK

Untuk menangani alur masuk dengan Firebase SDK, ikuti langkah-langkah berikut:

  1. Buat instance dari FederatedOAuthProviderData yang dikonfigurasi dengan id penyedia yang sesuai untuk Microsoft.

    firebase::auth::FederatedOAuthProviderData
        provider_data(firebase::auth::MicrosoftAuthProvider::kProviderId);
    
  2. Opsional : Tentukan parameter OAuth khusus tambahan yang ingin Anda kirim dengan permintaan OAuth.

    // Prompt user to re-authenticate to Microsoft.
    provider_data.custom_parameters["prompt"] = "login";
    
    // Target specific email with login hint.
    provider_data.custom_parameters["login_hint"] =
        "user@firstadd.onmicrosoft.com";
    

    Untuk parameter yang didukung Microsoft, lihat dokumentasi Microsoft OAuth . Perhatikan bahwa Anda tidak dapat meneruskan parameter yang diperlukan Firebase dengan setCustomParameters() . Parameter tersebut adalah client_id , response_type , redirect_uri , state , scope dan response_mode .

    Untuk mengizinkan hanya pengguna dari penyewa Azure AD tertentu untuk masuk ke aplikasi, nama domain ramah penyewa Azure AD atau pengidentifikasi GUID penyewa dapat digunakan. Ini dapat dilakukan dengan menentukan bidang "penyewa" di objek parameter khusus.

    // Optional "tenant" parameter in case you are using an Azure AD tenant.
    // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'
    // or "common" for tenant-independent tokens.
    // The default value is "common".
    provider_data.custom_parameters["tenant"] ="TENANT_ID";
    
  3. Opsional : Tentukan cakupan OAuth 2.0 tambahan di luar profil dasar yang ingin Anda minta dari penyedia autentikasi.

    provider_data.scopes.push_back("mail.read");
    provider_data.scopes.push_back("calendars.read");
    

    Untuk mempelajari lebih lanjut, lihat izin Microsoft dan dokumentasi persetujuan .

  4. Setelah data penyedia Anda dikonfigurasi, gunakan untuk membuat FederatedOAuthProvider.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    firebase::auth::FederatedOAuthProvider provider(provider_data);
    
  5. Mengautentikasi dengan Firebase menggunakan objek penyedia Auth. Perhatikan bahwa tidak seperti operasi FirebaseAuth lainnya, ini akan mengontrol UI Anda dengan memunculkan tampilan web tempat pengguna dapat memasukkan kredensial mereka.

    Untuk memulai alur masuk, panggil signInWithProvider :

    firebase::Future<firebase::auth::SignInResult> result =
      auth->SignInWithProvider(provider_data);
    

    Aplikasi Anda kemudian dapat menunggu atau mendaftarkan panggilan balik di Masa Depan .

    Menggunakan token akses OAuth, Anda dapat memanggil Microsoft Graph API .

    Tidak seperti penyedia lain yang didukung oleh Firebase Auth, Microsoft tidak menyediakan URL foto dan sebaliknya, data biner untuk foto profil harus diminta melalui Microsoft Graph API .

  6. Meskipun contoh di atas berfokus pada alur masuk, Anda juga memiliki kemampuan untuk menautkan penyedia Microsoft Azure Active Directory ke pengguna yang sudah ada menggunakan LinkWithProvider . Misalnya, Anda dapat menautkan beberapa penyedia ke pengguna yang sama yang memungkinkan mereka masuk dengan salah satunya.

    firebase::Future<firebase::auth::SignInResult> result = user->LinkWithProvider(provider_data);
    
  7. Pola yang sama dapat digunakan dengan ReauthenticateWithProvider yang dapat digunakan untuk mengambil kredensial baru untuk operasi sensitif yang memerlukan login terbaru.

    firebase::Future<firebase::auth::SignInResult> result =
      user->ReauthenticateWithProvider(provider_data);
    

    Aplikasi Anda kemudian dapat menunggu atau mendaftarkan panggilan balik di Masa Depan .

Langkah selanjutnya

Setelah pengguna masuk untuk pertama kalinya, akun pengguna baru dibuat dan ditautkan ke kredensial—yaitu, nama pengguna dan sandi, nomor telepon, atau informasi penyedia autentikasi—yang digunakan pengguna untuk masuk. Akun baru ini disimpan sebagai bagian dari proyek Firebase Anda, dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam proyek Anda, terlepas dari cara pengguna masuk.

  • Di aplikasi, Anda bisa mendapatkan informasi profil dasar pengguna dari firebase::auth::User :

    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      std::string name = user->display_name();
      std::string email = user->email();
      std::string photo_url = user->photo_url();
      // The user's ID, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server,
      // if you have one. Use firebase::auth::User::Token() instead.
      std::string uid = user->uid();
    }
    
  • Dalam Aturan Keamanan Firebase Realtime Database dan Cloud Storage , Anda bisa mendapatkan ID pengguna unik pengguna yang masuk dari variabel auth , dan menggunakannya untuk mengontrol data apa yang dapat diakses pengguna.

Anda dapat mengizinkan pengguna masuk ke aplikasi Anda menggunakan beberapa penyedia autentikasi dengan menautkan kredensial penyedia autentikasi ke akun pengguna yang ada.

Untuk mengeluarkan pengguna, panggil SignOut() :

auth->SignOut();