Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Telefon Numarası ve C ++ kullanarak Firebase ile kimlik doğrulayın

Firebase Authentication'ı, kullanıcının telefonuna bir SMS mesajı göndererek bir kullanıcıyla oturum açmak için kullanabilirsiniz. Kullanıcı, SMS mesajında ​​bulunan tek seferlik bir kodu kullanarak oturum açar.

Bu belgede, Firebase SDK kullanılarak bir telefon numarası oturum açma akışının nasıl uygulanacağı açıklanmaktadır.

Sen başlamadan önce

  1. Firebase'i C ++ projenize ekleyin .
  2. Uygulamanızı henüz Firebase projenize bağlamadıysanız, bunu Firebase konsolundan yapın .

İOS'ta, telefon numarasıyla oturum açmanın fiziksel bir cihaz gerektirdiğini ve bir simülatörde çalışmayacağını unutmayın.

Güvenlik endişeleri

Yalnızca bir telefon numarası kullanarak kimlik doğrulama, uygun olsa da, diğer mevcut yöntemlerden daha az güvenlidir, çünkü bir telefon numarasına sahip olmak kullanıcılar arasında kolayca aktarılabilir. Ayrıca, birden çok kullanıcı profiline sahip cihazlarda, SMS mesajı alabilen herhangi bir kullanıcı, cihazın telefon numarasını kullanarak bir hesapta oturum açabilir.

Uygulamanızda telefon numarası tabanlı oturum açma kullanıyorsanız, bunu daha güvenli oturum açma yöntemleriyle birlikte sunmalı ve kullanıcıları telefon numarasıyla oturum açmanın güvenlik ödünleri konusunda bilgilendirmelisiniz.

Firebase projeniz için Telefon Numarası ile oturum açmayı etkinleştirin

Kullanıcılarda SMS ile oturum açmak için önce Firebase projeniz için Telefon Numarası oturum açma yöntemini etkinleştirmeniz gerekir:

  1. Firebase konsolunda Kimlik Doğrulama bölümünü açın.
  2. Oturum Açma Yöntemi sayfasında, Telefon Numarası oturum açma yöntemini etkinleştirin.

Firebase'in telefon numarası oturum açma isteği kotası, çoğu uygulamanın etkilenmeyeceği kadar yüksektir. Bununla birlikte, telefon kimlik doğrulaması ile çok yüksek sayıda kullanıcı oturum açmanız gerekiyorsa, fiyatlandırma planınızı yükseltmeniz gerekebilir. Fiyatlandırma sayfasına bakın.

APNs bildirimleri almaya başlayın (iOS)

İOS'ta telefon numarası kimlik doğrulamasını kullanmak için uygulamanızın Firebase'den APNs bildirimlerini alabilmesi gerekir. Bir cihazda bir kullanıcının telefon numarasıyla ilk kez oturum açtığınızda Firebase Authentication, telefon numarası oturum açma isteğinin uygulamanızdan geldiğini doğrulamak için cihaza sessiz bir push bildirimi gönderir. (Bu nedenle, telefon numarasıyla oturum açma simülatörde kullanılamaz.)

APNs bildirimlerini Firebase Authentication ile kullanmak üzere etkinleştirmek için:

  1. Xcode'da, projeniz için push bildirimlerini etkinleştirin .
  2. APNs sertifikanızı Firebase'e yükleyin. Zaten bir APNs sertifikanız yoksa, bkz. APNs SSL Sertifikalarını Sağlama .

    1. Firebase konsolundaki projenizin içinde dişli simgesini seçin, Proje Ayarları'nı ve ardından Bulut Mesajlaşma sekmesini seçin.

    2. Geliştirme sertifikanız, üretim sertifikanız veya her ikisi için Sertifika Yükle düğmesini seçin. En az bir tane gereklidir.

    3. Her sertifika için .p12 dosyasını seçin ve varsa parolayı girin. Bu sertifika için paket kimliğinin uygulamanızın paket kimliğiyle eşleştiğinden emin olun. Kaydet'i seçin.

Kullanıcının telefonuna bir doğrulama kodu gönderin

Telefon numarasıyla oturum açmayı başlatmak için, kullanıcıya telefon numarasını vermesini isteyen bir arayüz PhoneAuthProvider::VerifyPhoneNumber ve ardından PhoneAuthProvider::VerifyPhoneNumber SMS ile kullanıcının telefonuna bir kimlik doğrulama kodu göndermesini istemek için PhoneAuthProvider::VerifyPhoneNumber arayın:

  1. Kullanıcının telefon numarasını alın.

    Yasal gereksinimler değişiklik gösterir, ancak en iyi uygulama ve kullanıcılarınızın beklentilerini belirlemek için, telefonla oturum açmayı kullanırlarsa doğrulama için bir SMS mesajı alabileceklerini ve standart ücretlerin geçerli olduğunu onlara bildirmelisiniz.

  2. PhoneAuthProvider::VerifyPhoneNumber arayın ve ona kullanıcının telefon numarasını PhoneAuthProvider::VerifyPhoneNumber .
    class PhoneListener : public PhoneAuthProvider::Listener {
     public:
      ~PhoneListener() override {}
    
      void OnVerificationCompleted(Credential credential) override {
        // Auto-sms-retrieval or instant validation has succeeded (Android only).
        // No need for the user to input the verification code manually.
        // `credential` can be used instead of calling GetCredential().
      }
    
      void OnVerificationFailed(const std::string& error) override {
        // Verification code not sent.
      }
    
      void OnCodeSent(const std::string& verification_id,
                      const PhoneAuthProvider::ForceResendingToken&
                          force_resending_token) override {
        // Verification code successfully sent via SMS.
        // Show the Screen to enter the Code.
        // Developer may want to save that verification_id along with other app states in case
        // the app is terminated before the user gets the SMS verification code.
      }
    };
    
    PhoneListener phone_listener;
    PhoneAuthProvider& phone_provider = PhoneAuthProvider::GetInstance(auth);
    phone_provider->VerifyPhoneNumber(phone_number, kAutoVerifyTimeOut, null,
                                      &phone_listener);
    
    PhoneAuthProvider::VerifyPhoneNumber , PhoneAuthProvider::VerifyPhoneNumber ,
    • (iOS'ta) uygulamanıza sessiz bir push bildirimi gönderir,
    • belirtilen telefon numarasına kimlik doğrulama kodu içeren bir SMS mesajı gönderir ve tamamlama işlevinize bir doğrulama kimliği aktarır. Kullanıcıda oturum açmak için hem doğrulama koduna hem de doğrulama kimliğine ihtiyacınız olacak.
  3. Doğrulama kimliğini kaydedin ve uygulamanız yüklendiğinde geri yükleyin. Bunu yaparak, kullanıcı oturum açma akışını tamamlamadan önce (örneğin, SMS uygulamasına geçerken) uygulamanız sonlandırılırsa, hala geçerli bir doğrulama kimliğiniz olduğundan emin olabilirsiniz.

    Doğrulama kimliğini istediğiniz şekilde saklayabilirsiniz. Çapraz platform C ++ çerçevesiyle yazıyorsanız, uygulamanın sonlandırılması ve geri yüklenmesi için bildirimler sağlamalıdır. Bu olaylarda, sırasıyla doğrulama kimliğini kaydedebilir ve geri yükleyebilirsiniz.

VerifyPhoneNumber çağrısı, VerifyPhoneNumber Dinleyicinizde çağrılmasına neden olursa, kullanıcıdan doğrulama kodunu SMS mesajıyla OnCodeSent .

Öte yandan, VerifyPhoneNumber çağrısı VerifyPhoneNumber sonuçlanırsa, otomatik doğrulama başarılı olur ve şimdi aşağıda açıklandığı gibi kullanabileceğiniz bir Credential OnVerificationCompleted sahip olursunuz.

Kullanıcıda doğrulama koduyla oturum açın

Kullanıcı, SMS mesajındaki doğrulama kodunu uygulamanıza sağladıktan sonra, doğrulama kodu ve doğrulama kimliğinden bir Credential nesnesi oluşturarak ve bu nesneyi Auth::SignInWithCredential ileterek kullanıcıyı oturum açın.

  1. Doğrulama kodunu kullanıcıdan alın.
  2. Doğrulama kodundan ve doğrulama kimliğinden bir Credential nesnesi oluşturun.
    Credential credential = phone_auth_provider->GetCredential(
        verification_id_.c_str(), verification_code.c_str());
        
  3. Kullanıcıda Credential nesnesiyle oturum açın:
    Future<User*> future = auth_->SignInWithCredential(credential);
    future.OnCompletion(
        [](const Future<User*>& result, void*) {
          if (result.error() == kAuthErrorNone) {
            // Successful.
            // User is signed in.
            const User* user = *result.result();
    
            // This should display the phone number.
            printf("Phone number: %s", user->phone_number().c_str());
    
            // The phone number provider UID is the phone number itself.
            printf("Phone provider uid: %s", user->uid().c_str());
    
            // The phone number providerID is 'phone'
            printf("Phone provider ID: %s", user->provider_id().c_str());
          } else {
            // Error.
            printf("Sign in error: %s", result.error_message().c_str());
          }
        },
        nullptr);
    

Sonraki adımlar

Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı oluşturulur ve oturum açan kullanıcı kimlik bilgilerine (yani kullanıcı adı ve parolası, 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 bir kullanıcıyı tanımlamak için kullanılabilir.

  • Uygulamalarınızda, kullanıcının temel profil bilgilerini firebase::auth::User nesnesinden alabilirsiniz:

    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();
    }
    
  • Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda , oturum auth kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve bir kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

Yetkilendirme sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak , kullanıcıların birden çok kimlik doğrulama sağlayıcısı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz .

Bir kullanıcının oturumunu kapatmak için SignOut() arayın:

auth->SignOut();