Unity ile Telefon Numarası kullanarak Firebase ile kimlik doğrulama

SMS mesajı göndererek bir kullanıcının oturumunu açmak için Firebase Authentication kullanabilirsiniz kullanıcının telefonuna. Kullanıcı SMS mesajı.

Bu dokümanda, Firebase SDK'sı.

Başlamadan önce

  1. Kullanmadan önce Firebase Authentication Firebase Unity SDK'sını (özellikle FirebaseAuth.unitypackage) ekleyebilirsiniz.

    Bu ilk kurulum adımlarına ilişkin ayrıntılı talimatları şu adreste bulabilirsiniz: Firebase'i Unity'nize ekleyin ).

  2. Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolunda bulabilirsiniz.
  3. Telefon numarasıyla oturum açmak için platform gereksinimlerini anlama:
    • Telefon numarasıyla oturum açma özelliği yalnızca mobil platformlara yöneliktir.
    • iOS'te telefon numarasıyla oturum açmak için fiziksel bir cihaz gerekir ve simülatörde kullanılamaz.

Güvenlikle ilgili sorunlar

Yalnızca telefon numarası kullanarak kimlik doğrulama, kolay olsa da daha az güvenlidir diğer mevcut yöntemlerden farklıdır. Çünkü bir telefon numarasına sahip olmak kullanıcılar arasında kolayca aktarılabilir. Ayrıca, birden fazla kullanıcısı olan cihazlarda SMS mesajı alabilen tüm kullanıcılar bir hesapta oturum açmak için cihazın telefon numarası.

Uygulamanızda telefon numarasına dayalı oturum açma özelliği kullanıyorsanız bunu sunmalısınız güvenli oturum açma yöntemlerine yer verir ve kullanıcıları, güvenliği olumlu sonuçlar doğurabilir.

Firebase projeniz için Telefon Numarasıyla oturum açmayı etkinleştirme

Kullanıcıların SMS ile oturum açmasını sağlamak için önce Telefon Numarası oturum açma özelliğini etkinleştirmeniz gerekir yöntemi belirleyin:

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

Firebase'in telefon numarası oturum açma isteği kotası, çoğu uygulamanın etkilenmez. Ancak, çok sayıda kullanıcıyla oturum açmanız gerekiyorsa Telefonla kimlik doğrulama için fiyatlandırma planınızı yükseltmeniz gerekebilir. Görüntüleyin fiyatlandırma sayfası.

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

iOS'te telefon numarası kimlik doğrulamasını kullanmak için uygulamanızın Firebase'den APNs bildirimleri. Bir kullanıcının telefonuyla oturum açtığınızda ilk kez dokunulduğunda Firebase Authentication sessiz bir push işlemi gönderir. telefon numarasıyla oturum açma isteğinin geldiğini doğrulamak için cihaza bildirim gönderme nasıl sağlayabileceğini de öğreneceksiniz. (Bu nedenle, telefon numarasıyla oturum açma, simülatörü gibi)

Firebase Authentication ile kullanılacak APNs bildirimlerini etkinleştirmek için:

  1. Xcode'da, projeniz için push bildirimlerini etkinleştirin.
  2. APNs sertifikanızı Firebase'e yükleyin. Henüz bir APNs sertifikanız yoksa Apple Geliştirici Üye Merkezi.

    1. Firebase konsolunda projenizin içinde, açılır menüden dişli simgesi, seçin Proje Ayarları'nı tıklayın ve ardından Cloud Messaging sekmesi.

    2. Sertifika Yükle'yi seçin. sertifikanız için düğme, üretim sertifikası ya da her ikisi de olmalıdır. En az biri gereklidir.

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

Kullanıcının telefonuna doğrulama kodu gönderme

Telefon numarasıyla oturum açmayı başlatmak için kullanıcıya şunu isteyen bir arayüz sunun: telefon numarasını vermesini isteyebilir, sonra da Firebase'i istemek için PhoneAuthProvider.VerifyPhoneNumber Kullanıcının telefonuna SMS ile bir kimlik doğrulama kodu gönder:

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

    Yasal şartlar değişiklik gösterse de en iyi uygulama olarak ve kullanıcılarınızın beklentilerini belirlemek için de kullandıkları kullanıcılarınıza doğrulama ve standart kullanım için bir SMS mesajı alabilirler. uygulanır.

  2. PhoneAuthProvider.VerifyPhoneNumber adlı kullanıcıya bir PhoneAuthOptions ilet telefon numarasını içeren bir e-posta alırsınız.
    PhoneAuthProvider provider = PhoneAuthProvider.GetInstance(firebaseAuth);
    provider.VerifyPhoneNumber(
      new Firebase.Auth.PhoneAuthOptions {
        PhoneNumber = phoneNumber,
        TimeoutInMilliseconds = phoneAuthTimeoutMs,
        ForceResendingToken = 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.
      });
    
    . PhoneAuthProvider.VerifyPhoneNumber, Firebase'i aradığınızda
    • (iOS'te), uygulamanıza sessiz bir push bildirimi gönderir.
    • Firebase, doğrulama kodu içeren bir SMS mesajı belirtilen telefon numarasına bir kod gönderir ve tamamlanma fonksiyonunuz. Hem doğrulama koduna ihtiyacınız olacak ve kullanıcının oturum açmak için kullandığı doğrulama kimliği.
  3. Doğrulama kimliğini kaydedin ve uygulamanız yüklendiğinde geri yükleyin. Böylece, Uygulamanız için hâlâ geçerli bir doğrulama kimliğinizin olduğundan kullanıcı oturum açma akışını tamamlamadan önce sonlandırıldığında (ör. (SMS uygulamasına geçin).

    Doğrulama kimliğini istediğiniz şekilde saklayabilirsiniz. Basit bir yol, doğrulama kimliğini UnityEngine.PlayerPrefs ile kaydedin.

codeSent işlevine iletilen geri çağırma çağrılırsa şunu yapabilirsiniz: SMS ile gönderilen kullanıcıdan doğrulama kodunu yazmasını iste mesajını alırsınız.

Diğer yandan, verificationCompleted için geri çağırma otomatik doğrulama başarılı olmuştur ve artık hesabınızda Aşağıda açıklandığı şekilde kullanabileceğiniz PhoneAuthCredential.

Doğrulama koduyla kullanıcının oturumunu açma

Kullanıcı, uygulamanıza SMS ile gönderilen doğrulama kodunu sağladıktan sonra bir PhoneAuthCredential mesajı oluşturarak kullanıcının oturum açmasını sağlayın nesnesini dahil edip bu nesneyi iletmeden önce Hedef: FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync.

  1. Kullanıcıdan doğrulama kodunu alın.
  2. Doğrulamadan bir Credential nesnesi oluşturun kimliğinizi girin.
    PhoneAuthCredential credential =
        phoneAuthProvider.GetCredential(verificationId, verificationCode);
        
  3. PhoneAuthCredential nesnesiyle kullanıcının oturumunu açın:
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " +
                       task.Exception);
        return;
      }
    
      FirebaseUser newUser = task.Result.User;
      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

Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve bilgileri (kullanıcı adı ve şifre, telefon numarası) Numara veya kimlik doğrulama sağlayıcı bilgileri (oturum açan kullanıcı). Bu yeni Firebase projenizin bir parçası olarak saklanır ve aşağıdaki verileri tanımlamak için kullanılabilir: nasıl oturum açarsa açsın, projenizdeki tüm uygulamalarda kullanılır.

  • Uygulamalarınızda, kullanıcıların temel profil bilgilerini şuradan alabilirsiniz: Firebase.Auth.FirebaseUser nesne:

    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;
    }
    
  • Firebase Realtime Database ve Cloud Storage içinde Güvenlik Kuralları'nı kullanarak şunları yapabilirsiniz: auth değişkeninden, oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilirsiniz. ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanılır.

Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz yetkilendirme sağlayıcısının kimlik bilgilerini hesaba katılmaz.

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

auth.SignOut();