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ı.
Uygulamanıza telefon numarası ile oturum açma bilgisi eklemenin en kolay yolu FirebaseUI, telefon için oturum açma akışlarını uygulayan bir açılır oturum açma widget'ı içerir numarayla oturum açmanın yanı sıra şifre tabanlı ve birleşik oturum açma. Bu doküman , Firebase SDK'sını kullanarak telefon numarası oturum açma akışının nasıl uygulanacağını açıklar.
Başlamadan önce
- Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolunda bulabilirsiniz.
-
Firebase bağımlılıklarını yükleyip yönetmek için Swift Package Manager'ı kullanın.
- Xcode'da, uygulama projeniz açıkken Dosya > Paket Ekle'yi tıklayın.
- İstendiğinde Firebase Apple platformlar SDK deposunu ekleyin:
- Firebase Authentication kitaplığını seçin.
-ObjC
işaretini, hedefinizin derleme ayarlarındaki Diğer Bağlayıcı İşaretleri bölümüne ekleyin.- İşlemi tamamladığınızda, Xcode otomatik olarak arka planda tutmalarını sağlar.
https://github.com/firebase/firebase-ios-sdk.git
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:
- Firebase konsolunda Kimlik Doğrulama bölümünü açın.
- Oturum Açma Yöntemi sayfasında Telefon Numarası'nı etkinleştirin oturum açma yöntemini kullanabilirsiniz.
Uygulama doğrulamayı etkinleştirme
Telefon numarası kimlik doğrulamasını kullanmak için Firebase'in bunu doğrulayabilmesi gerekir telefon numarası oturum açma istekleri uygulamanızdan geliyor. İki yol vardır Firebase Authentication bunu başarıyor:
- Sessiz APN bildirimleri: Bir kullanıcının
telefon numarasını kullandığında Firebase Authentication,
cihaza gönderilen jetonları sessiz bir push bildirimi olarak göndermelidir. Uygulamanız
Firebase'den bildirim başarıyla alındı, telefon numarası
devam edebilir.
iOS 8.0 ve sonraki sürümlerde sessiz bildirimlerde ve dolayısıyla da bu e-posta adresini almayı reddeden kullanıcıdan Uygulamadaki APNs bildirimleri. Bu nedenle, uygulamanın kullanıcı Firebase telefonu uygularken push bildirimleri alma izni kimlik doğrulama.
- reCAPTCHA doğrulaması: ReCAPTCHA doğrulaması veya sessiz bir push bildirimi göndermek mümkün değildir. Örneğin, kullanıcı veya arka planda yenileme özelliğini devre dışı bıraktığınızda iOS simülatörü, Firebase Authentication tamamlamak için reCAPTCHA doğrulamasını kullanır telefon oturum açma akışından bahsetmek istiyorum. reCAPTCHA testi çoğu zaman tamamlanabilir kullanıcı herhangi bir şey çözmek zorunda kalmadan.
Sessiz push bildirimleri düzgün şekilde yapılandırıldığında yalnızca çok küçük reCAPTCHA akışıyla karşılaşacak kullanıcıların yüzdesi. Yine de sessiz push olsa da olmasa da telefon numarasıyla oturum açma işleminin doğru bir şekilde çalıştığından emin olun. bildirim alınabilir.
Sessiz bildirimler almaya başla
Firebase Authentication ile kullanılacak APNs bildirimlerini etkinleştirmek için:
- Xcode'da, projeniz için push bildirimlerini etkinleştirin.
-
APNs kimlik doğrulama anahtarınızı Firebase'e yükleyin. Halihazırda bir APNs kimlik doğrulama anahtarınız yoksa Apple Geliştirici Üye Merkezi.
-
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.
-
iOS uygulaması yapılandırması bölümündeki APN kimlik doğrulama anahtarı'nda, Yükle'yi tıklayın. düğmesini tıklayın.
-
Anahtarınızı kaydettiğiniz konuma gidin, anahtarı seçin ve Aç. Anahtarın anahtar kimliğini ekleyin ( Apple Developer Member Center) oturum açın Yükle.
Zaten bir APNs sertifikanız varsa sertifikayı yükleyebilirsiniz. .
-
- Xcode'da, projeniz için Arka Plan Modları özelliğini etkinleştirin ve sonra arka plan modları arasındaki Arka planda getirme ve Uzaktan bildirimler modlarını etkinleştirin.
reCAPTCHA doğrulamasını ayarlama
Firebase SDK'sının reCAPTCHA doğrulamasını kullanmasını sağlamak için:
- Xcode projenize özel URL şemaları ekleyin:
- Proje yapılandırmanızı açın: sol ağaç görünümünde yer alır. HEDEFLER bölümünden uygulamanızı seçin, ardından Bilgi sekmesini seçin ve URL Türleri bölümünü genişletin.
- + düğmesini tıklayın ve Kodlanmış Uygulama Kimliğinizi URL olarak ekleyin
şema. Kodlanmış Uygulama Kimliğinizi şurada bulabilirsiniz:
Genel
Firebase konsolunun Ayarlar sayfasındaki Ayarlar bölümünde
uygulamasını indirin. Diğer alanları boş bırakın.
Tamamlandığında yapılandırmanız şuna benzer bir görünümde olacaktır: aşağıdaki (ancak uygulamaya özel değerlerinizle):
- İsteğe bağlı: Uygulamanızın
Size reCAPTCHA'yı gösterirken
SFSafariViewController
, özel bir tane oluşturun veAuthUIDelegate
protokolüne uyan bir sınıfı belirtmelisiniz veverifyPhoneNumber(_:uiDelegate:completion:)
.
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 verifyPhoneNumber(_:uiDelegate:completion:)
Kullanıcının telefonuna SMS ile bir kimlik doğrulama kodu gönder:
-
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 amacıyla, kullandıkları cihazlarda doğrulama ve standart kullanım için bir SMS mesajı alabilirler. uygulanır.
verifyPhoneNumber(_:uiDelegate:completion:)
adlı kişiyi telefonla ara, ona yönlendir Kullanıcının telefon numarası.Swift
PhoneAuthProvider.provider() .verifyPhoneNumber(phoneNumber, uiDelegate: nil) { verificationID, error in if let error = error { self.showMessagePrompt(error.localizedDescription) return } // Sign in using the verificationID and the code sent to the user // ... }
Objective-C
[[FIRPhoneAuthProvider provider] verifyPhoneNumber:userInput UIDelegate:nil completion:^(NSString * _Nullable verificationID, NSError * _Nullable error) { if (error) { [self showMessagePrompt:error.localizedDescription]; return; } // Sign in using the verificationID and the code sent to the user // ... }];
verifyPhoneNumber
yöntemi reentrant: yöntemi (örneğin, birden çok kez çağırırsanız) bir görünümünonAppear
yöntemindeverifyPhoneNumber
yöntemi orijinal istek zaman aşımına uğramıyorsa ikinci bir SMS gönder.verifyPhoneNumber(_:uiDelegate:completion:)
adlı kişiyi aradığınızda, Firebase, uygulamanıza sessiz bir push bildirimi gönderir veya Kullanıcıya reCAPTCHA sorgulaması. Uygulamanız bildirimi veya kullanıcı reCAPTCHA testini tamamladığında, Firebase numaralı telefona, kimlik doğrulama kodu içeren bir SMS mesajı belirtilen telefon numarasını verir ve size bir doğrulama kimliği gönderir. işlevini kullanın. Hem doğrulama koduna hem de doğrulamaya ihtiyacınız olacak Kullanıcının oturum açmak için kullandığı kimlik.Firebase tarafından gönderilen SMS mesajı da Auth'unuzdaki
languageCode
özelliği aracılığıyla kimlik doğrulama dili örneğidir.Swift
// Change language code to french. Auth.auth().languageCode = "fr";
Objective-C
// Change language code to french. [FIRAuth auth].languageCode = @"fr";
-
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
NSUserDefaults
nesnesiyle kaydedin:Swift
UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
Objective-C
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:verificationID forKey:@"authVerificationID"];
Ardından, kaydedilen değeri geri yükleyebilirsiniz:
Swift
let verificationID = UserDefaults.standard.string(forKey: "authVerificationID")
Objective-C
NSString *verificationID = [defaults stringForKey:@"authVerificationID"];
verifyPhoneNumber(_:uiDelegate:completion:)
doğrulama işlemi başarılı olursa, kullanıcıdan doğrulama kodunu
SMS'le alabilirsiniz.
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 FIRPhoneAuthCredential
mesajı oluşturarak kullanıcının oturum açmasını sağlayın
nesnesini dahil edip bu nesneyi iletmeden önce
Hedef: signInWithCredential:completion:
.
- Kullanıcıdan doğrulama kodunu alın.
- Doğrulamadan bir
FIRPhoneAuthCredential
nesnesi oluşturun kimliğinizi girin.Swift
let credential = PhoneAuthProvider.provider().credential( withVerificationID: verificationID, verificationCode: verificationCode )
Objective-C
FIRAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:verificationID verificationCode:userInput];
FIRPhoneAuthCredential
nesnesiyle kullanıcının oturumunu açın:Swift
Auth.auth().signIn(with: credential) { authResult, error in if let error = error { let authError = error as NSError if isMFAEnabled, authError.code == AuthErrorCode.secondFactorRequired.rawValue { // The user is a multi-factor user. Second factor challenge is required. let resolver = authError .userInfo[AuthErrorUserInfoMultiFactorResolverKey] as! MultiFactorResolver var displayNameString = "" for tmpFactorInfo in resolver.hints { displayNameString += tmpFactorInfo.displayName ?? "" displayNameString += " " } self.showTextInputPrompt( withMessage: "Select factor to sign in\n\(displayNameString)", completionBlock: { userPressedOK, displayName in var selectedHint: PhoneMultiFactorInfo? for tmpFactorInfo in resolver.hints { if displayName == tmpFactorInfo.displayName { selectedHint = tmpFactorInfo as? PhoneMultiFactorInfo } } PhoneAuthProvider.provider() .verifyPhoneNumber(with: selectedHint!, uiDelegate: nil, multiFactorSession: resolver .session) { verificationID, error in if error != nil { print( "Multi factor start sign in failed. Error: \(error.debugDescription)" ) } else { self.showTextInputPrompt( withMessage: "Verification code for \(selectedHint?.displayName ?? "")", completionBlock: { userPressedOK, verificationCode in let credential: PhoneAuthCredential? = PhoneAuthProvider.provider() .credential(withVerificationID: verificationID!, verificationCode: verificationCode!) let assertion: MultiFactorAssertion? = PhoneMultiFactorGenerator .assertion(with: credential!) resolver.resolveSignIn(with: assertion!) { authResult, error in if error != nil { print( "Multi factor finanlize sign in failed. Error: \(error.debugDescription)" ) } else { self.navigationController?.popViewController(animated: true) } } } ) } } } ) } else { self.showMessagePrompt(error.localizedDescription) return } // ... return } // User is signed in // ... }
Objective-C
[[FIRAuth auth] signInWithCredential:credential completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { if (isMFAEnabled && error && error.code == FIRAuthErrorCodeSecondFactorRequired) { FIRMultiFactorResolver *resolver = error.userInfo[FIRAuthErrorUserInfoMultiFactorResolverKey]; NSMutableString *displayNameString = [NSMutableString string]; for (FIRMultiFactorInfo *tmpFactorInfo in resolver.hints) { [displayNameString appendString:tmpFactorInfo.displayName]; [displayNameString appendString:@" "]; } [self showTextInputPromptWithMessage:[NSString stringWithFormat:@"Select factor to sign in\n%@", displayNameString] completionBlock:^(BOOL userPressedOK, NSString *_Nullable displayName) { FIRPhoneMultiFactorInfo* selectedHint; for (FIRMultiFactorInfo *tmpFactorInfo in resolver.hints) { if ([displayName isEqualToString:tmpFactorInfo.displayName]) { selectedHint = (FIRPhoneMultiFactorInfo *)tmpFactorInfo; } } [FIRPhoneAuthProvider.provider verifyPhoneNumberWithMultiFactorInfo:selectedHint UIDelegate:nil multiFactorSession:resolver.session completion:^(NSString * _Nullable verificationID, NSError * _Nullable error) { if (error) { [self showMessagePrompt:error.localizedDescription]; } else { [self showTextInputPromptWithMessage:[NSString stringWithFormat:@"Verification code for %@", selectedHint.displayName] completionBlock:^(BOOL userPressedOK, NSString *_Nullable verificationCode) { FIRPhoneAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:verificationID verificationCode:verificationCode]; FIRMultiFactorAssertion *assertion = [FIRPhoneMultiFactorGenerator assertionWithCredential:credential]; [resolver resolveSignInWithAssertion:assertion completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { if (error) { [self showMessagePrompt:error.localizedDescription]; } else { NSLog(@"Multi factor finanlize sign in succeeded."); } }]; }]; } }]; }]; } else if (error) { // ... return; } // User successfully signed in. Get user data from the FIRUser object if (authResult == nil) { return; } FIRUser *user = authResult.user; // ... }];
Hayali telefon numaralarıyla test etme
Firebase konsolu üzerinden geliştirme için kurgusal telefon numaraları ayarlayabilirsiniz. Hayali telefonla test etme sayılar şu faydaları sağlar:
- Kullanım kotanızı tüketmeden telefon numarası kimlik doğrulamasını test edin.
- Gerçek bir SMS mesajı göndermeden telefon numarası kimlik doğrulamasını test edin.
- Kısıtlamadan, aynı telefon numarasıyla art arda testler yapın. Bu Uygulama mağazası inceleme sürecinde en az test için aynı telefon numarasını kullanın.
- Örneğin, Google Play Hizmetleri olmadan iOS simülatöründe veya Android emülatöründe geliştirme yeteneği.
- Entegrasyon testlerini, normalde uygulanan güvenlik kontrolleri tarafından engellenmeden yaz gerçek telefon numaraları için kullandığı bir teknolojidir.
Hayali telefon numaraları aşağıdaki şartları karşılamalıdır:
- Gerçekten hayali olan ve daha önce var olmayan telefon numaraları kullandığınızdan emin olun. Firebase Authentication, gerçek kullanıcılar tarafından kullanılan mevcut telefon numaralarını test numarası olarak ayarlamanıza izin vermez. Seçeneklerden biri, ABD test telefon numaraları olarak 555 önekli numarayı kullanmaktır. Örneğin: +1 650-555-3434
- Telefon numaralarının uzunlukları ve diğer özellikleri kısıtlar. Yine de gerçek bir kullanıcının telefon numarasıyla aynı doğrulamadan geçerler.
- Geliştirme için en fazla 10 telefon numarası ekleyebilirsiniz.
- Tahmin edilmesi ve değiştirilmesi zor test telefon numaraları/kodları kullanın yapmanızı öneririm.
Hayali telefon numaraları ve doğrulama kodları oluşturma
- Firebase konsolunda şunu açın: Kimlik Doğrulama bölümüne bakın.
- Henüz yapmadıysanız Oturum açma yöntemi sekmesinde Telefon sağlayıcısını etkinleştirin.
- Test için telefon numaraları akordeon menüsünü açın.
- Test etmek istediğiniz telefon numarasını belirtin. Örneğin: +1 650-555-3434.
- Bu numara için 6 haneli doğrulama kodunu girin. Örneğin: 654321.
- Numarayı ekleyin. Gerekirse telefon numarasını silebilir ve fareyle ilgili satırın üzerine gelip çöp kutusu simgesini tıklayarak kodu.
Manuel test
Uygulamanızda hayali bir telefon numarasını doğrudan kullanmaya başlayabilirsiniz. Bu şekilde şunları yapabilirsiniz: Geliştirme aşamalarında kota sorunları veya kısıtlamayla karşılaşmadan manuel testler gerçekleştirme. Google Play Hizmetleri olmadan doğrudan bir iOS simülatöründen veya Android emülatöründen de test edebilirsiniz yüklendi.
Hayali telefon numarasını girip doğrulama kodunu gönderdiğinizde, gönderilir. Bunun yerine, imza işlemini tamamlamak için önceden yapılandırılmış doğrulama kodunu sağlamanız gerekir inç
Oturum açma işlemi tamamlandığında, bu telefon numarasıyla bir Firebase kullanıcısı oluşturulur. İlgili içeriği oluşturmak için kullanılan kullanıcı, gerçek bir telefon numarası kullanıcısıyla aynı davranışa ve özelliklere sahiptir; ve kullanıcı, Realtime Database/Cloud Firestore ve diğer hizmetlerde aynı şekilde çalışır. sırasında basılan kimlik jetonu bu işlem gerçek bir telefon numarası kullanıcısıyla aynı imzaya sahiptir.
Diğer bir seçenek de, özel aracılığıyla bir test rolü hak taleplerine ilişkin ve erişim.
Entegrasyon testi
Firebase Authentication, manuel teste ek olarak entegrasyon testleri yazmaya yardımcı olan API'ler de sağlar. telefon kimlik doğrulama testi için. Bu API'ler reCAPTCHA'yı devre dışı bırakarak uygulama doğrulamayı devre dışı bırakır. ve iOS'teki sessiz push bildirimlerinde kullanabilirsiniz. Bu sayede otomasyon testleri yapabilir ve uygulanması daha kolay olur. Ayrıca, anlık görüntü testi veya doğrulama akışı da mevcut.
iOS'te appVerificationDisabledForTesting
ayarı
verifyPhoneNumber
numaralı telefonu aramadan önce TRUE
. Bu işlem, gerek kalmadan gerçekleştirilir
APNs jetonu veya arka planda sessiz push bildirimleri göndererek test etmeyi kolaylaştırır.
simülatörde test etmektir. Bu işlem, reCAPTCHA yedek akışını da devre dışı bırakır.
Uygulama doğrulama devre dışı bırakıldığında hayali olmayan bir telefon numarası kullanıldığında, oturum açma tamamlanamadı. Bu API ile yalnızca hayali telefon numaraları kullanılabilir.
Swift
let phoneNumber = "+16505554567" // This test verification code is specified for the given test phone number in the developer console. let testVerificationCode = "123456" Auth.auth().settings.isAppVerificationDisabledForTesting = TRUE PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate:nil) { verificationID, error in if (error) { // Handles error self.handleError(error) return } let credential = PhoneAuthProvider.provider().credential(withVerificationID: verificationID ?? "", verificationCode: testVerificationCode) Auth.auth().signInAndRetrieveData(with: credential) { authData, error in if (error) { // Handles error self.handleError(error) return } _user = authData.user }]; }];
Objective-C
NSString *phoneNumber = @"+16505554567"; // This test verification code is specified for the given test phone number in the developer console. NSString *testVerificationCode = @"123456"; [FIRAuth auth].settings.appVerificationDisabledForTesting = YES; [[FIRPhoneAuthProvider provider] verifyPhoneNumber:phoneNumber completion:^(NSString *_Nullable verificationID, NSError *_Nullable error) { if (error) { // Handles error [self handleError:error]; return; } FIRAuthCredential *credential = [FIRPhoneAuthProvider credentialWithVerificationID:verificationID verificationCode:testVerificationCode]; [FIRAuth auth] signInWithAndRetrieveDataWithCredential:credential completion:^(FIRUser *_Nullable user, NSError *_Nullable error) { if (error) { // Handles error [self handleError:error]; return; } _user = user; }]; }];
Ek: Telefonla oturum açma özelliğini ekranı kaydırmadan kullanma
Firebase Authentication, uygulamanızın bilgilerini otomatik olarak almak için kaydırma yöntemini kullanır Firebase'in gönderdiği sessiz push bildirimlerini yönetmek için APNs jetonu ve gelen izleme kodundan özel şema yönlendirmesini otomatik olarak Doğrulama sırasındaki reCAPTCHA doğrulama sayfasını
Kaydırma özelliğini kullanmak istemiyorsanız bayrağı ekleyerek bu özelliği devre dışı bırakabilirsiniz.
FirebaseAppDelegateProxyEnabled
- Uygulamanızın Info.plist dosyasına ve
NO
olarak ayarlıyorum. Bu işaretin NO
olarak ayarlanmasını unutmayın
Aşağıdakiler dahil olmak üzere diğer Firebase ürünlerinde de kaydırmayı devre dışı bırakır:
Firebase Cloud Messaging.
Kaydırmayı devre dışı bırakırsanız APNs cihaz jetonunu, push bildirimlerini ve özel şema yönlendirme URL'sini Firebase Authentication adresine yönlendirir.
Bir SwiftUI uygulaması oluşturuyorsanız APNs cihaz jetonunu, push bildirimlerini ve özel şema yönlendirme URL'sini Firebase Authentication adresine yönlendirir.
APNs cihaz jetonunu almak için
application(_:didRegisterForRemoteNotificationsWithDeviceToken:)
.
yöntemini kullanmasını isteyin ve bunun içinde cihaz jetonunu Auth
setAPNSToken(_:type:)
yöntemi.
Swift
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { // Pass device token to auth Auth.auth().setAPNSToken(deviceToken, type: .unknown) // Further handling of the device token if needed by the app // ... }
Objective-C
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Pass device token to auth. [[FIRAuth auth] setAPNSToken:deviceToken type:FIRAuthAPNSTokenTypeProd]; // Further handling of the device token if needed by the app. }
Push bildirimlerini yönetmek için
application(_:didReceiveRemoteNotification:fetchCompletionHandler:):
.
yöntemi yerine şunu çağırarak Firebase kimlik doğrulamasıyla ilgili bildirimleri kontrol edin:
Auth
ürününün canHandleNotification(_:)
yöntemi.
Swift
func application(_ application: UIApplication, didReceiveRemoteNotification notification: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { if Auth.auth().canHandleNotification(notification) { completionHandler(.noData) return } // This notification is not auth related; it should be handled separately. }
Objective-C
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // Pass notification to auth and check if they can handle it. if ([[FIRAuth auth] canHandleNotification:notification]) { completionHandler(UIBackgroundFetchResultNoData); return; } // This notification is not auth related; it should be handled separately. }
Özel şema yönlendirme URL'sini işlemek için
application(_:open:options:)
yöntemini kullanır ve bunların içinde URL'yi Auth
canHandleURL(_:)
yöntemi.
Swift
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { if Auth.auth().canHandle(url) { return true } // URL not auth related; it should be handled separately. }
Objective-C
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options { if ([[FIRAuth auth] canHandleURL:url]) { return YES; } // URL not auth related; it should be handled separately. }
SwiftUI veya UISceneDelegate
kullanıyorsanız yönlendirme URL'sini işlemek için
scene(_:openURLContexts:)
yöntemini çağırın ve bunların içinde URL'yi Auth
canHandleURL(_:)
yöntemi.
Swift
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { for urlContext in URLContexts { let url = urlContext.url _ = Auth.auth().canHandle(url) } // URL not auth related; it should be handled separately. }
Objective-C
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts { for (UIOpenURLContext *urlContext in URLContexts) { [FIRAuth.auth canHandleURL:urlContext.url]; // URL not auth related; it should be handled separately. } }
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:
User
nesnesini tanımlayın. Kullanıcıları Yönetme başlıklı makaleye göz atın. 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:
değerleridir.
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
Ayrıca tüm kimlik doğrulama aralığı için hata işleme kodu da ekleyebilirsiniz. hatalar. Hataları İşleme bölümüne bakın.