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

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırı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. Firebase Authentication'ı kullanmadan önce, Unity projenize Firebase Unity SDK'sını (özellikle FirebaseAuth.unitypackage ) eklemeniz gerekir.

    Unity projenize Firebase Ekleme bölümünde bu ilk kurulum adımları için ayrıntılı talimatları bulun.

  2. Uygulamanızı henüz Firebase projenize bağlamadıysanız, bunu Firebase konsolundan yapın.

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. 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. 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. Fiyatlandırma sayfasına bakı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'da projeniz için anında iletme bildirimlerini etkinleştirin .
  2. APNs sertifikanızı Firebase'e yükleyin. Halihazırda bir APNs sertifikanız yoksa Apple Developer Üye Merkezi'nde bir tane oluşturduğunuzdan emin olun.

    1. Firebase konsolunda projenizin içinde dişli simgesini seçin, Project Settings öğesini seçin ve ardından Cloud Messaging 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 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ı ile oturum açmayı başlatmak için kullanıcıya telefon numarasını vermesini isteyen bir arayüz sunun ve ardından Firebase'in kullanıcının telefonuna SMS ile 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 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. Kullanıcının telefon numarasını ileterek PhoneAuthProvider.VerifyPhoneNumber arayın.
    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.
      });
    
    PhoneAuthProvider.VerifyPhoneNumber , Firebase'i aradığınızda,
    • (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. Doğrulama kimliğini UnityEngine.PlayerPrefs ile kaydetmek basit bir yoldur.

codeSent'e iletilen geri arama codeSent , kullanıcıdan doğrulama kodunu SMS mesajında ​​aldığında yazmasını isteyebilirsiniz.

Öte yandan, verificationCompleted Tamamlandı için geri arama çağrılırsa, otomatik doğrulama başarılı olmuştur ve artık aşağıda açıklandığı gibi kullanabileceğiniz bir Credential olacaktır.

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 FirebaseAuth.SignInWithCredential geçirerek kullanıcı oturumunu açın.

  1. Kullanıcıdan doğrulama kodunu alın.
  2. Doğrulama kodundan ve doğrulama kimliğinden bir Credential nesnesi oluşturun.
    Credential credential =
        phoneAuthProvider.GetCredential(verificationId, verificationCode);
        
  3. Kullanıcıda Credential nesnesi ile oturum açın:
    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.

  • Uygulamalarınızda, kullanıcının temel profil bilgilerini Firebase.Auth.FirebaseUser nesnesinden alabilirsiniz:

    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 Gerçek Zamanlı Veritabanınız ve Bulut Depolama Güvenlik Kurallarınızda , oturum açmış kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve bunu bir kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

Kimlik doğrulama sağlayıcısı 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() 'u arayın:

auth.SignOut();