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

Kullanıcının telefonuna SMS mesajı göndererek kullanıcının oturum açmasını sağlamak için Firebase Authentication'ı kullanabilirsiniz. Kullanıcı, SMS mesajında ​​yer alan tek kullanımlık kodu kullanarak oturum açar.

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

Sen başlamadan önce

  1. Firebase Authentication'ı kullanabilmeniz için önce Firebase Unity SDK'sını (özellikle FirebaseAuth.unitypackage ) Unity projenize eklemeniz gerekir.

    Bu ilk kurulum adımlarına ilişkin ayrıntılı talimatları Firebase'i Unity projenize ekleme bölümünde bulabilirsiniz.

  2. Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolundan yapın.
  3. Telefon Numarasıyla oturum açmaya yönelik platform gereksinimlerini anlayın:
    • Telefon Numarasıyla oturum açma yalnızca mobil platformlar içindir.
    • iOS'ta Telefon Numarasıyla oturum açmak için fiziksel bir cihaz gerekir ve simülatörde çalışmaz.

Güvenlik endişeleri

Yalnızca telefon numarası kullanılarak yapılan kimlik doğrulama, uygun olmasına rağmen, diğer mevcut yöntemlere göre daha az güvenlidir çünkü bir telefon numarasına sahip olmak kullanıcılar arasında kolaylıkla 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ına dayalı oturum açmayı kullanıyorsanız, bunu daha güvenli oturum açma yöntemlerinin yanında sunmalı ve kullanıcıları telefon numarasıyla oturum açmanın güvenlik açısından getireceği ödünler konusunda bilgilendirmelisiniz.

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

Kullanıcıların SMS ile oturum açmasını sağlamak için öncelikle Firebase projenizde Telefon Numarasıyla 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ıyla oturum açma yöntemini etkinleştirin.

Firebase'in telefon numarasıyla oturum açma isteği kotası, çoğu uygulamanın etkilenmeyeceği kadar yüksektir. Ancak telefon kimlik doğrulamasıyla çok yüksek sayıda kullanıcının oturum açması 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 bir kullanıcıyı telefon numarasıyla ilk kez oturum açtığınızda Firebase Authentication, telefon numarasıyla oturum açma isteğinin uygulamanızdan geldiğini doğrulamak için cihaza sessiz bir anında bildirim gönderir. (Bu nedenle simülatörde telefon numarasıyla giriş yapılamamaktadır.)

Firebase Authentication ile kullanılmak üzere APN bildirimlerini etkinleştirmek için:

  1. Xcode'da projeniz için anında bildirimleri etkinleştirin .
  2. APN sertifikanızı Firebase'e yükleyin. Henüz bir APN sertifikanız yoksa Apple Geliştirici Üye Merkezi'nde bir tane oluşturduğunuzdan emin olun.

    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 Sertifikayı 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 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 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 sunun ve ardından Firebase'in kullanıcının telefonuna SMS yoluyla 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 gereklilikler farklılık gösterebilir ancak en iyi uygulama olarak ve kullanıcılarınız için beklentileri belirlemek amacıyla, telefonla oturum açmayı kullanmaları durumunda doğrulama için bir SMS mesajı alabileceklerini ve standart ücretlerin geçerli olacağını onlara bildirmelisiniz.

  2. PhoneAuthProvider.VerifyPhoneNumber çağırın ve ona kullanıcının telefon numarasını içeren PhoneAuthOptions değerini iletin.
    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'ta), uygulamanıza sessiz bir anında bildirim gönderir.
    • Firebase, belirtilen telefon numarasına kimlik doğrulama kodu içeren bir SMS mesajı gönderir ve tamamlama işlevinize bir doğrulama kimliğini iletir. Kullanıcıda oturum açmak için hem doğrulama koduna hem de doğrulama kimliğine ihtiyacınız olacaktır.
  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) hâlâ geçerli bir doğrulama kimliğiniz olduğundan emin olabilirsiniz.

    Doğrulama kimliğini istediğiniz şekilde devam ettirebilirsiniz. Basit bir yol, doğrulama kimliğini UnityEngine.PlayerPrefs ile kaydetmektir.

codeSent iletilen geri arama çağrılırsa, kullanıcıdan doğrulama kodunu SMS mesajıyla aldığında yazmasını isteyebilirsiniz.

Öte yandan, verificationCompleted için geri arama çağrılırsa, otomatik doğrulama başarılı olmuş demektir ve artık aşağıda açıklandığı gibi kullanabileceğiniz bir PhoneAuthCredential sahip olacaksınız.

Doğrulama koduyla kullanıcıda oturum açın

Kullanıcı, SMS mesajındaki doğrulama kodunu uygulamanıza sağladıktan sonra, doğrulama kodundan ve doğrulama kimliğinden bir PhoneAuthCredential nesnesi oluşturup bu nesneyi FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync ileterek kullanıcının 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.
    PhoneAuthCredential credential =
        phoneAuthProvider.GetCredential(verificationId, verificationCode);
        
  3. PhoneAuthCredential nesnesiyle kullanıcıda oturum 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

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 bilgileriyle (yani kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) ilişkilendirilir. 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.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ı ve Bulut Depolama Güvenliği Kurallarınızda , oturum açan kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve bunu, 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 fazla 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() öğesini çağırın:

auth.SignOut();