Kullanıcının telefonuna SMS mesajı göndererek kullanıcıların oturum açmasını sağlamak için Firebase Authentication simgesini kullanabilirsiniz. Kullanıcı, SMS mesajında yer alan tek kullanımlık kodu kullanarak oturum açar.
Bu belgede, Firebase SDK'sını kullanarak telefon numarasıyla oturum açma akışının nasıl uygulanacağı açıklanmaktadır.
Başlamadan önce
-
Firebase Authentication'ı kullanabilmek için Firebase Unity SDK'sını (özellikle
FirebaseAuth.unitypackage) Unity projenize eklemeniz gerekir.Bu ilk kurulum adımlarıyla ilgili ayrıntılı talimatları Firebase'i Unity projenize ekleme başlıklı makalede bulabilirsiniz.
- Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolundan yapın.
- Telefon numarasıyla oturum açma için platform şartlarını anlama:
- Telefon numarasıyla oturum açma yalnızca mobil platformlarda kullanılabilir.
- iOS'te telefon numarasıyla oturum açmak için fiziksel bir cihaz gerekir ve bu özellik simülatörde çalışmaz.
Güvenlikle ilgili endişeler
Yalnızca telefon numarası kullanılarak yapılan kimlik doğrulama, kolaylık sağlasa da diğer yöntemlere kıyasla daha az güvenlidir. Bunun nedeni, telefon numarası sahipliğinin kullanıcılar arasında kolayca aktarılabilmesidir. Ayrıca, birden fazla kullanıcı profili olan cihazlarda SMS mesajı alabilen tüm kullanıcılar, cihazın telefon numarasını kullanarak bir hesapta oturum açabilir.
Uygulamanızda telefon numarasına dayalı oturum açma özelliğini kullanıyorsanız bu özelliği daha güvenli oturum açma yöntemleriyle birlikte sunmalı ve kullanıcılara telefon numarasıyla oturum açmanın güvenlik açısından dezavantajları hakkında bilgi vermelisiniz.
Firebase projeniz için telefon numarasıyla oturum açma özelliğini etkinleştirme
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:
- Firebase konsolunda Güvenlik > Kimlik doğrulama'ya gidin.
- Oturum açma yöntemi sekmesinde Telefon oturum açma sağlayıcısını etkinleştirin.
-
SMS mesajlarının gönderilmesine izin vermek veya bu mesajları engellemek istediğiniz bölgelerle ilgili bir politika belirleyin. SMS bölgesi politikası ayarlamak, uygulamalarınızı SMS kötüye kullanımına karşı korumanıza yardımcı olabilir. Yeni projelerde varsayılan politika hiçbir bölgeye izin vermez.
- Firebase konsolunda Güvenlik > Kimlik doğrulama > Ayarlar sekmesine gidin.
- SMS bölgesi politikası bölümünde SMS bölgesi politikanızı ayarlayın.
APNs bildirimlerini almaya başlama (yalnızca iOS)
iOS'te telefon numarası kimlik doğrulamasını kullanmak için uygulamanızın Firebase'den APNs bildirimleri alabilmesi gerekir. Bir kullanıcı, cihazda ilk kez telefon numarasıyla oturum açtığında Firebase Authentication, telefon numarasıyla 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.)
Firebase Authentication ile kullanılacak APNs bildirimlerini etkinleştirmek için:
- Xcode'da projeniz için push bildirimlerini etkinleştirin.
APNs sertifikanızı Firebase'e yükleyin. Henüz APNs sertifikanız yoksa Apple Developer Member Center'da bir tane oluşturduğunuzdan emin olun.
-
Firebase konsolunda
Ayarlar > Genel'e gidin. Ardından, Cloud Messaging sekmesini tıklayın. - Geliştirme sertifikanız, üretim sertifikanız veya her ikisi için Sertifika Yükle'yi tıklayın. En az bir tane bildirmeniz gerekir.
-
Her sertifika için
.p12dosyasını seçin ve varsa şifreyi girin. Bu sertifikanın paket kimliğinin, uygulamanızın paket kimliğiyle eşleştiğinden emin olun. Kaydet'i tıklayın.
-
Firebase konsolunda
Kullanıcının telefonuna doğrulama kodu gönderme
Telefon numarasıyla oturum açma işlemini başlatmak için kullanıcıya telefon numarasını girmesini isteyen bir arayüz gösterin ve ardından Firebase'in kullanıcıya SMS ile kimlik doğrulama kodu göndermesini istemek için PhoneAuthProvider.VerifyPhoneNumber işlevini çağırın:
-
Kullanıcının telefon numarasını alma
Yasal koşullar farklılık gösterse de en iyi uygulama olarak ve kullanıcılarınızın beklentilerini karşılamak için onlara telefonla oturum açma özelliğini kullanmaları durumunda doğrulama için SMS mesajı alabileceklerini ve standart ücretlerin geçerli olacağını bildirmeniz gerekir.
- Kullanıcının telefon numarasını içeren bir PhoneAuthOptions
ileterek
PhoneAuthProvider.VerifyPhoneNumberişlevini çağırın.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,- (iOS'te) uygulamanıza sessiz bir push bildirimi 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ği iletir. Kullanıcının oturum açması için hem doğrulama kodu hem de doğrulama kimliği gerekir.
-
Doğrulama kimliğini kaydedin ve uygulamanız yüklendiğinde geri yükleyin. Bunu yaparak, uygulamanız kullanıcı oturum açma akışını tamamlamadan önce sonlandırılırsa (ör. SMS uygulamasına geçerken) geçerli bir doğrulama kimliğinizin olmasını sağlayabilirsiniz.
Doğrulama kimliğini istediğiniz şekilde kalıcı hale getirebilirsiniz. Doğrulama kimliğini
UnityEngine.PlayerPrefsile kaydetmek basit bir yöntemdir.
codeSent öğesine iletilen geri çağırma işlemi çağrılırsa kullanıcıdan SMS mesajıyla aldığı doğrulama kodunu yazmasını isteyebilirsiniz.
Diğer yandan, verificationCompleted için geri arama yapılıyorsa otomatik doğrulama başarılı olmuştur ve artık aşağıda açıklandığı şekilde kullanabileceğiniz bir PhoneAuthCredential'niz vardır.
Kullanıcının doğrulama koduyla oturum açmasını sağlama
Kullanıcı, SMS mesajından gelen 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'ye ileterek kullanıcının oturumunu açın.
- Kullanıcıdan doğrulama kodunu alın.
- Doğrulama kodundan ve doğrulama kimliğinden bir
Credentialnesnesi oluşturun.PhoneAuthCredential credential = phoneAuthProvider.GetCredential(verificationId, verificationCode);
- Kullanıcının
PhoneAuthCredentialnesnesiyle oturum açmasını sağlayı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 bilgilerine (kullanıcı adı ve şifre, 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 kullanıcıyı tanımlamak için kullanılabilir.
-
Uygulamalarınızda, kullanıcının temel profil bilgilerini
Firebase.Auth.FirebaseUsernesnesinden 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 Realtime Database ve Cloud Storage Güvenlik Kurallarınızda, oturum açmış kullanıcının benzersiz kullanıcı kimliğini
authdeğişkeninden alabilir ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.
Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak kullanıcıların uygulamanızda birden fazla kimlik doğrulama sağlayıcı kullanarak oturum açmasına izin verebilirsiniz.
Bir kullanıcının oturumunu kapatmak için
SignOut() numaralı telefonu arayın:
auth.SignOut();