Kullanıcının telefonuna bir SMS mesajı göndererek kullanıcının oturumunu açmak için Firebase Authentication'ı kullanabilirsiniz. Kullanıcı, SMS mesajında bulunan tek seferlik bir kodu kullanarak oturum açar.
Bu belgede, Firebase SDK kullanılarak bir telefon numarası oturum açma akışının nasıl uygulanacağı açıklanmaktadır.
Sen başlamadan önce
Firebase Authentication'ı kullanmadan önce Unity projenize Firebase Unity SDK'sını (özellikle
FirebaseAuth.unitypackage
) eklemeniz gerekir.Bu ilk kurulum adımları için ayrıntılı talimatları Unity projenize Firebase ekleyin bölümünde bulabilirsiniz.
- Uygulamanızı henüz Firebase projenize bağlamadıysanız, bunu Firebase konsolundan yapın.
- Telefon Numarası oturumu için platform gereksinimlerini anlayın:
- Telefon Numarası girişi yalnızca mobil platformlar içindir.
- iOS'ta Telefon Numarası oturumu açmak için fiziksel bir cihaz gerekir ve simülatörde çalışmaz.
Güvenlik endişeleri
Yalnızca bir telefon numarası kullanarak kimlik doğrulaması 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ı profili olan 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çmayı kullanmanın güvenlik ödünleşimleri 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ı oturum açma yöntemini etkinleştirmeniz gerekir:
- Firebase konsolunda Kimlik Doğrulama bölümünü açın.
- 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, telefon kimlik doğrulamasıyla çok yüksek sayıda kullanıcıyla 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 kullanıcıyı bir cihazda telefon numarasıyla ilk kez oturum açtığınızda Firebase Authentication, telefon numarası oturum açma isteğinin uygulamanızdan geldiğini doğrulamak için cihaza sessiz bir push bildirimi gönderir. (Bu nedenle telefon numarası girişi simülatör üzerinde kullanılamaz.)
APN bildirimlerini Firebase Authentication ile kullanmak üzere etkinleştirmek için:
- Xcode'da, projeniz için push bildirimlerini etkinleştirin .
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.
Firebase konsolundaki projenizin içinde, dişli çark simgesini seçin, Proje Ayarları'nı seçin ve ardından Bulut Mesajlaşma sekmesini seçin.
Geliştirme sertifikanız, üretim sertifikanız veya her ikisi için Sertifika Yükle düğmesini seçin. En az bir tane gereklidir.
Her sertifika için .p12 dosyası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 seçin.
Kullanıcının telefonuna bir 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 PhoneAuthProvider.VerifyPhoneNumber
arayarak Firebase'in kullanıcının telefonuna SMS ile bir kimlik doğrulama kodu göndermesini isteyin:
Kullanıcının telefon numarasını alın.
Yasal gereksinimler değişebilir, ancak en iyi uygulama olarak ve kullanıcılarınız için beklentileri belirlemek amacıyla, telefonla oturum açmayı kullanırlarsa, doğrulama için bir SMS mesajı alabileceklerini ve standart ücretlerin geçerli olduğunu onlara bildirmelisiniz.
- Kullanıcının telefon numarasını içeren bir PhoneAuthOptions geçirerek
PhoneAuthProvider.VerifyPhoneNumber
öğesini arayı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'i aradığınızda,- (iOS'ta), uygulamanıza sessiz bir push bildirimi gönderir.
- Firebase, belirtilen telefon numarasına bir 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 olacaktır.
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 (örneğin, SMS uygulamasına geçiş yaparken) uygulamanız sonlandırılırsa 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 aranırsa, kullanıcıdan SMS mesajında doğrulama kodunu aldığında yazmasını isteyebilirsiniz.
Öte yandan, verificationCompleted
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 PhoneAuthCredential
sahip olacaksınız.
Kullanıcıyı doğrulama koduyla oturum açın
Kullanıcı uygulamanıza SMS mesajındaki doğrulama kodunu sağladıktan sonra, doğrulama kodundan ve doğrulama kimliğinden bir PhoneAuthCredential
nesnesi oluşturarak ve bu nesneyi FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync
öğesine geçirerek kullanıcının oturumunu açın.
- Kullanıcıdan doğrulama kodunu alın.
- Doğrulama kodundan ve doğrulama kimliğinden bir
Credential
nesnesi oluşturun.PhoneAuthCredential credential = phoneAuthProvider.GetCredential(verificationId, verificationCode);
- Kullanıcıda
PhoneAuthCredential
nesnesiyle 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 bilgilerine (yani, kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak saklanı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ü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.
Bir kullanıcının oturumunu kapatmak için SignOut()
öğesini arayın:
auth.SignOut();