Kimlik doğrulama sunucunuzu, kullanıcı başarılı bir şekilde oturum açtığında özel imzalı jetonlar oluşturacak şekilde değiştirerek Firebase Authentication'yı özel bir kimlik doğrulama sistemiyle entegre edebilirsiniz. Uygulamanız bu jetonu alır ve Firebase ile kimlik doğrulamak için kullanır.
Başlamadan önce
- Firebase'i C++ projenize ekleyin.
- Projenizin sunucu anahtarlarını alın:
-
Firebase konsolunda
Ayarlar > Hizmet hesapları sekmesine gidin. - Firebase Admin SDK bölümünün alt kısmında Yeni Özel Anahtar Oluştur'u tıklayın.
- Yeni hizmet hesabının herkese açık/özel anahtar çifti otomatik olarak bilgisayarınıza kaydedilir. Bu dosyayı kimlik doğrulama sunucunuza kopyalayın.
-
Firebase konsolunda
Firebase ile kimlik doğrulama
Auth sınıfı, tüm API çağrıları için ağ geçididir.
- Auth ve App üstbilgi dosyalarını ekleyin:
#include "firebase/app.h" #include "firebase/auth.h"
- Başlatma kodunuzda bir
firebase::Appsınıfı oluşturun.#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__)
firebase::auth::Authsınıfınıfirebase::Appiçin edinin.AppileAutharasında bire bir eşleme vardır.firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
Auth::SignInWithCustomToken numaralı telefonu arayın.
- Kullanıcılar uygulamanızda oturum açtığında oturum açma kimlik bilgilerini (örneğin, kullanıcı adı ve şifreleri) kimlik doğrulama sunucunuza gönderin. Sunucunuz kimlik bilgilerini kontrol eder ve geçerli olmaları durumunda özel bir jeton döndürür.
- Kimlik doğrulama sunucunuzdan özel jetonu aldıktan sonra, kullanıcının oturumunu açmak için jetonu
Auth::SignInWithCustomToken'ya iletin:firebase::Future<firebase::auth::AuthResult> result = auth->SignInWithCustomToken(custom_token);
- Programınızda düzenli olarak çalışan bir güncelleme döngüsü varsa (örneğin, saniyede 30 veya 60 kez) sonuçları
Auth::SignInWithCustomTokenLastResultile güncelleme başına bir kez kontrol edebilirsiniz: Alternatif olarak, programınız etkinlik odaklıysa Future üzerinde geri çağırma kaydetmeyi tercih edebilirsiniz.firebase::Future<firebase::auth::AuthResult> result = auth->SignInWithCustomTokenLastResult(); if (result.status() == firebase::kFutureStatusComplete) { if (result.error() == firebase::auth::kAuthErrorNone) { firebase::auth::AuthResult auth_result = *result.result(); printf("Sign in succeeded for `%s`\n", auth_result.user.display_name().c_str()); } else { printf("Sign in failed with error '%s'\n", result.error_message()); } }
Sonraki adımlar
Bir kullanıcı ilk kez oturum açtıktan sonra yeni bir kullanıcı hesabı oluşturulur ve kullanıcının oturum açtığı kimlik bilgilerine (kullanıcı adı ve şifre, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığına bakılmaksızın projenizdeki her uygulamada kullanıcıyı tanımlamak için kullanılabilir.
-
Uygulamalarınızda, kullanıcının temel profil bilgilerini
firebase::auth::Usernesnesinden alabilirsiniz:firebase::auth::User user = auth->current_user(); if (user.is_valid()) { 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(); }
Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda, oturum açmış kullanıcının benzersiz kullanıcı kimliğini
authdeğişkeninden alabilir ve kullanıcının hangi verilere erişebileceğini kontrol etmek için bu kimliği kullanabilirsiniz.
Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak kullanıcıların uygulamanızda birden fazla kimlik doğrulama sağlayıcı kullanarak oturum açmasına izin verebilirsiniz.
Bir kullanıcının oturumunu kapatmak için
SignOut() numaralı telefonu arayın:
auth->SignOut();