Catch up on everthing we announced at this year's Firebase Summit. Learn more

Unity ile bir Telefon Numarası kullanarak Firebase ile kimlik doğrulaması yapın

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

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

Sen başlamadan önce

  1. Eğer kullanmadan önce Firebase Authentication , eklemek gerekir Firebase Birlik SDK'yı (özellikle FirebaseAuth.unitypackage sizin Birlik projesine).

    Bu ilk kurulum adımlarını hakkında ayrıntılı talimatlar için sizin Birlik projesine Ekle Firebase .

  2. Henüz Firebase projesine uygulamanızı bağlı değil varsa, gelen bunu Firebase konsoluna .

iOS'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 olmakla birlikte, mevcut diğer yöntemlerden daha az güvenlidir, çünkü bir telefon numarasına sahip olmak kullanıcılar arasında kolayca aktarılabilir. Ayrıca, birden fazla 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çmayı 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 değiş tokuşları hakkında 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ı ile oturum açma yöntemini etkinleştirmelisiniz:

  1. In Firebase konsoluna , Kimlik Doğrulama bölümünü açın.
  2. Yöntem Oturum Açma sayfasında, Telefon Numarası oturum açma yöntemine sağlar.

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

APN bildirimlerini almaya başlayın (yalnızca iOS)

iOS'ta telefon numarası kimlik doğrulamasını kullanmak için uygulamanızın Firebase'den APN bildirimleri alabilmesi gerekir. Bir cihazda telefon numarasıyla ilk kez bir kullanıcı oturum açtığınızda, Firebase Kimlik Doğrulama, telefon numarası oturum açma isteğinin uygulamanızdan geldiğini doğrulamak için cihaza sessiz bir anında iletme bildirimi gönderir. (Bu nedenle, bir simülatörde telefon numarası ile giriş yapılamaz.)

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

  1. Xcode olarak, push bildirimleri etkinleştirmek projeniz için.
  2. APNs sertifikanızı Firebase'e yükleyin. Zaten bir APN'ler sertifikası yoksa, içinde oluşturmak için emin olun Elma Geliştirici Üye Merkezi .

    1. Firebase konsolunda proje içinde, dişli çark simgesini seçmek Proje Ayarları seçip Bulut Mesajlaşma sekmesini seçin.

    2. Geliştirme sertifikası, üretim sertifikası veya her ikisi için Yükle Belgesi düğmesini seçin. En az biri gereklidir.

    3. Her sertifika için .p12 dosyasını seçin ve varsa parolayı girin. Bu sertifikanın 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ı istemleri onların telefon numarasını temin etmek olduğunu kullanıcıya bir arayüz sunmak, oturum açma başlatabilir ve ardından aramak için PhoneAuthProvider.VerifyPhoneNumber Firebase SMS ile kullanıcının telefonuna bir kimlik doğrulama kodu göndermek olduğunu isteğine:

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

    Yasal gereksinimler değişiklik gösterir, ancak en iyi uygulama olarak 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. Çağrı PhoneAuthProvider.VerifyPhoneNumber buna kullanıcının telefon numarasını geçirerek,.
    PhoneAuthProvider provider = PhoneAuthProvider.GetInstance(firebaseAuth);
    provider.VerifyPhoneNumber(phoneNumber, phoneAuthTimeoutMs, null,
      verificationCompleted: (credential) => {
        // Auto-sms-retrieval or instant validation has succeeded (Android only).
        // There is no need to input the verification code.
        // `credential` can be used instead of calling GetCredential().
      },
      verificationFailed: (error) => {
        // The verification code was not sent.
        // `error` contains a human readable explanation of the problem.
      },
      codeSent: (id, token) => {
        // Verification code was successfully sent via SMS.
        // `id` contains the verification id that will need to passed in with
        // the code from the user when calling GetCredential().
        // `token` can be used if the user requests the code be sent again, to
        // tie the two requests together.
      },
      codeAutoRetrievalTimeout: (id) => {
        // Called when the auto-sms-retrieval has timed out, based on the given
        // timeout parameter.
        // `id` contains the verification id of the request that timed out.
      });
    
    Aradığınızda PhoneAuthProvider.VerifyPhoneNumber Firebase,
    • (iOS'ta), uygulamanıza sessiz bir anında iletme bildirimi gönderir.
    • Firebase, belirtilen telefon numarasına bir kimlik doğrulama kodu içeren bir SMS mesajı gönderir ve tamamlama işlevinize bir doğrulama kimliği iletir. 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 uygulamanız sonlandırılırsa (örneğin, SMS uygulamasına geçiş yaparken) geçerli bir doğrulama kimliğiniz olduğundan emin olabilirsiniz.

    Doğrulama kimliğini istediğiniz şekilde sürdürebilirsiniz. Basit bir yolu ile doğrulama kimliği kurtarmaktır UnityEngine.PlayerPrefs .

Geçirilen geri arama ise codeSent denir, onlar SMS mesajında aldığınızda doğrulama kodunu yazmak için kullanıcıdan.

İçin geri arama Öte yandan, verificationCompleted denir, daha sonra otomatik doğrulama başarılı oldu ve artık bir olacak Credential aşağıda açıklandığı gibi kullanabilirsiniz hangi ile.

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

Kullanıcısı SMS mesajından doğrulama kodu ile uygulamanızı sağladıktan sonra, bir oluşturarak kullanıcıyı oturum Credential doğrulama kodu ve doğrulama kimliğinden nesne ve bu nesnenin geçirerek FirebaseAuth.SignInWithCredential .

  1. Kullanıcıdan doğrulama kodunu alın.
  2. Bir oluşturma Credential doğrulama kodu ve doğrulama numarası nesne.
    Credential credential =
        phoneAuthProvider.GetCredential(verificationId, verificationCode);
        
  3. İle kullanıcı giriş Credential nesne:
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " +
                       task.Exception);
        return;
      }
    
      FirebaseUser newUser = task.Result;
      Debug.Log("User signed in successfully");
      // This should display the phone number.
      Debug.Log("Phone number: " + newUser.PhoneNumber);
      // The phone number providerID is 'phone'.
      Debug.Log("Phone provider ID: " + newUser.ProviderId);
    });
    

Sonraki adımlar

Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı oluşturulur ve oturum açtığı kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcısı bilgileri gibi kimlik bilgilerine bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığından bağımsız olarak projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.

  • Senin uygulamalarda, gelen kullanıcının temel profil bilgileri alabilirsiniz Firebase.Auth.FirebaseUser nesnesi:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // 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 User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • Senin Firebase Gerçek Zamanlı Veritabanı ve Bulut Depolama yılında Güvenlik Kuralları , alabilirsiniz, kullanıcının benzersiz bir kullanıcı kimliği imzalı auth değişkeni ve hangi verilerin kullanıcı teneke erişimi kontrol etmek için kullanabilirsiniz.

Kullanıcıların birden çok kimlik doğrulama sağlayıcıları kullanarak uygulamada oturum izin verebilir mevcut bir kullanıcı hesabına auth sağlayıcı kimlik bilgilerini birbirine bağlayan.

Bir kullanıcı Oturumu kapatmak için çağrı SignOut() :

auth.SignOut();