FirebaseUI, uygulamanızda kullanım için yerleşik kullanıcı arayüzü akışları sağlayan, Firebase Authentication SDK'sının üzerine kurulu bir kitaplıktır. FirebaseUI şu avantajları sağlar:
- Birden fazla sağlayıcı: e-posta/şifre, e-posta bağlantısı, telefon doğrulaması, Google ile Oturum Açma, Facebook Girişi ve Twitter Girişi için oturum açma akışları.
- Hesap yönetimi: Hesap oluşturma ve şifre sıfırlama gibi hesap yönetimi görevlerini yürütmek için gereken akışlar.
- Anonim hesap bağlama: Anonim hesapları otomatik olarak kimlik sağlayıcılara bağlamak için kullanılan akışlardır.
- Özelleştirilebilir: FirebaseUI'nin görünümünü uygulamanıza uyacak şekilde özelleştirin. Ayrıca, FirebaseUI açık kaynak olduğundan projeyi çatallayabilir ve tam olarak ihtiyaçlarınıza göre özelleştirebilirsiniz.
Başlamadan önce
FirebaseUI'yi Podfile dosyanıza ekleyin:
pod 'FirebaseUI'
İsterseniz yalnızca Kimlik Doğrulama bileşenini ve kullanmak istediğiniz sağlayıcıları ekleyebilirsiniz:
pod 'FirebaseUI/Auth' pod 'FirebaseUI/Google' pod 'FirebaseUI/Facebook' pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc pod 'FirebaseUI/Phone'
Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolundan yapın.
Oturum açma yöntemlerini ayarlayın
Firebase'i kullanarak kullanıcıların oturumunu açabilmeniz için önce desteklemek istediğiniz oturum açma yöntemlerini etkinleştirmeniz ve yapılandırmanız gerekir.
E-posta adresi ve şifre
Firebase konsolunda Kimlik Doğrulama bölümünü açıp e-posta ve şifreyle kimlik doğrulamayı etkinleştirin.
E-posta bağlantısı kimlik doğrulaması
Firebase konsolunda Kimlik Doğrulama bölümünü açın. Oturum açma yöntemi sekmesinde, E-posta/Şifre sağlayıcısını etkinleştirin. E-posta bağlantısıyla oturum açmayı kullanmak için e-posta veya şifreyle oturum açma özelliğinin etkinleştirilmesi gerektiğini unutmayın.
Aynı bölümde E-posta bağlantısı (şifresiz oturum açma) oturum açma yöntemini etkinleştirin ve Kaydet'i tıklayın.
Bir
FUIEmailAuth
örneğiniFIREmailLinkAuthSignInMethod
ile başlatarak e-posta bağlantısıyla oturum açmayı etkinleştirebilirsiniz. Ayrıca,handleCodeInApp
değerinin doğru değerine ayarlandığı geçerli birFIRActionCodeSettings
nesnesi sağlamanız gerekir.
Swift
var actionCodeSettings = ActionCodeSettings()
actionCodeSettings.url = URL(string: "https://example.appspot.com")
actionCodeSettings.handleCodeInApp = true
actionCodeSettings.setAndroidPackageName("com.firebase.example", installIfNotAvailable: false, minimumVersion: "12")
let provider = FUIEmailAuth(authUI: FUIAuth.defaultAuthUI()!,
signInMethod: FIREmailLinkAuthSignInMethod,
forceSameDevice: false,
allowNewEmailAccounts: true,
actionCodeSetting: actionCodeSettings)
Objective-C
FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
actionCodeSettings.URL = [NSURL URLWithString:@"https://example.appspot.com"];
actionCodeSettings.handleCodeInApp = YES;
[actionCodeSettings setAndroidPackageName:@"com.firebase.example"
installIfNotAvailable:NO
minimumVersion:@"12"];
id<FUIAuthProvider> provider = [[FUIEmailAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]
signInMethod:FIREmailLinkAuthSignInMethod
forceSameDevice:NO
allowNewEmailAccounts:YES
actionCodeSetting:actionCodeSettings];
Ayrıca, başlatıcıya ilettiğiniz URL'yi de beyaz listeye eklemeniz gerekir. Bunu yapmak için Firebase konsolunda Kimlik Doğrulama bölümünü açın. Oturum açma yöntemi sekmesinde, Yetkili alanlar altına URL'yi ekleyin.
Derin bağlantıyı yakaladıktan sonra işlenebilmesi için kimlik doğrulama kullanıcı arayüzüne iletmeniz gerekir.
Swift
FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)
Objective-C
[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
- FirebaseUI-iOS'teki e-posta bağlantısıyla oturum açma özelliği, FirebaseUI-Android ve FirebaseUI-web ile uyumludur. Bu sürümde, FirebaseUI-Android'den akışı başlatan bir kullanıcı bağlantıyı açıp FirebaseUI-web ile oturum açma işlemini tamamlayabilir. Aynısı, karşıt akış için de geçerlidir.
Apple
Firebase Apple ile oturum açma kılavuzundaki Başlamadan önce ve Apple anonimleştirilmiş veri şartlarına uyma bölümlerini uygulayın.
Yararlanma hakları dosyanıza Apple ile oturum açma özelliğini ekleyin.
Apple ile oturum açma özelliği için yapılandırılmış bir OAuth sağlayıcı örneğini başlatın:
Swift
provider = FUIOAuth.appleAuthProvider()
Objective-C
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
- Bu eğiticiyi kullanarak Google ile Oturum Açma özelliğini ayarlama
Facebook'un başlangıç sayfasını takip ederek Facebook Giriş SDK'sını ayarlayın.
Firebase konsolunda Kimlik Doğrulama bölümünü açın ve Facebook'u etkinleştirin. Facebook ile oturum açmayı etkinleştirmek için Facebook Uygulama Kimliğinizi ve Facebook Geliştirici Konsolu'ndan bulabileceğiniz Uygulama Gizli Anahtarınızı sağlamanız gerekir.
Proje Ayarları > Özellikler ekranından Xcode projenizdeki anahtar zinciri paylaşımını etkinleştirin.
fbFACEBOOK_APP_ID
öğesini Xcode projenize URL şeması olarak ekleyin.Facebook uygulaması kimliğinizi ve görünen adınızı
Info.plist
dosyasına ekleyin:Anahtar Değer FacebookUygulama Kimliği FACEBOOK_APP_ID
(örneğin,1234567890
)FacebookGörüntü Adı Uygulamanızın adı Facebook sağlayıcı örneğini başlatın:
Swift
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
Objective-C
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
Facebook Sınırlı Giriş kullanmak istiyorsanız
FUIFacebookAuth
örneğindeuseLimitedLogin
özelliğini ayarlayın.Swift
provider.useLimitedLogin = true
Objective-C
provider.useLimitedLogin = YES;
Firebase konsolunda Kimlik Doğrulama bölümünü açın ve Twitter'ı etkinleştirin. Twitter ile oturum açmayı etkinleştirmek için Twitter API'si tüketici anahtarınızı ve sırrınızı sağlamanız gerekir. Bu anahtara Twitter Uygulama Yönetimi konsolundan ulaşabilirsiniz.
Twitter girişi için yapılandırılmış bir OAuth sağlayıcı örneğini başlatın:
Swift
provider = FUIOAuth.twitterAuthProvider()
Objective-C
FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
Telefon numarası
Firebase konsolunda Kimlik Doğrulama bölümünü açın ve telefon numarasıyla oturum açmayı etkinleştirin.
Firebase, telefon numarası oturum açma isteklerinin uygulamanızdan geldiğini doğrulayabilmelidir. Bunu yapmanın yollarından biri APNs bildirimleridir. Ayrıntılar için Uygulama doğrulamayı etkinleştirme bölümüne bakın.
Firebase Authentication ile kullanmak üzere 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 Developer Member Center'da bir tane oluşturduğunuzdan emin olun.
-
Firebase konsolunda projenizin içinde, dişli simgesini, Proje Ayarları'nı ve ardından Cloud Messaging sekmesini seçin.
-
iOS uygulaması yapılandırması bölümündeki APN kimlik doğrulama anahtarı'nda Yükle düğmesini tıklayın.
-
Anahtarınızı kaydettiğiniz konuma gidin, anahtarı seçin ve Aç'ı tıklayın. Anahtarın anahtar kimliğini ekleyin ( Apple Geliştirici Üye Merkezi'nde mevcuttur) ve Yükle'yi tıklayın.
Zaten bir APNs sertifikanız varsa bunun yerine sertifikayı yükleyebilirsiniz.
-
Bir cihazda APNs bildirimleri alınamadığında Firebase, istekleri doğrulamak için reCAPTCHA'yı kullanır.
reCAPTCHA doğrulamasını etkinleştirmek için Xcode'da aşağıdakileri yapın:
- Proje yapılandırmanızı açın: Sol ağaç görünümünde proje adını çift tıklayın. 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 şeması olarak ekleyin. Kodlanmış Uygulama Kimliğinizi, Firebase konsolunun Genel Ayarlar sayfasının iOS uygulamanızın bölümünde bulabilirsiniz. Diğer alanları boş bırakın.
Tamamlandığında yapılandırmanız aşağıdakine benzer bir görünümde olacaktır (ancak uygulamaya özel değerlerinizle):
İsteğe bağlı: Firebase, uygulamanızın APNs jetonunu otomatik olarak almak, uygulamanıza gönderdiği sessiz push bildirimlerini yönetmek ve doğrulama sırasında reCAPTCHA doğrulama sayfasından özel şema yönlendirmesini otomatik olarak engellemek için kaydırma yöntemini kullanır.
Kaydırma özelliğini kullanmamayı tercih ederseniz Firebase SDK'sı kimlik doğrulama belgelerindeki Ek: Telefonda oturum açma işlemini hızlandırmadan kullanma bölümünü inceleyin.
Oturum aç
FirebaseUI oturum açma akışını başlatmak için önce FirebaseUI'yi başlatın:
Swift
import FirebaseAuthUI
/* ... */
FirebaseApp.configure()
let authUI = FUIAuth.defaultAuthUI()
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self
Objective-C
@import FirebaseAuthUI;
...
[FIRApp configure];
FUIAuth *authUI = [FUIAuth defaultAuthUI];
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self;
Ardından, FirebaseUI'yi desteklemek istediğiniz oturum açma yöntemlerini kullanacak şekilde yapılandırın:
Swift
import FirebaseAuthUI
import FirebaseFacebookAuthUI
import FirebaseGoogleAuthUI
import FirebaseOAuthUI
import FirebasePhoneAuthUI
let providers: [FUIAuthProvider] = [
FUIGoogleAuth(),
FUIFacebookAuth(),
FUITwitterAuth(),
FUIPhoneAuth(authUI:FUIAuth.defaultAuthUI()),
]
self.authUI.providers = providers
Objective-C
@import FirebaseAuthUI;
@import FirebaseFacebookAuthUI;
@import FirebaseGoogleAuthUI;
@import FirebaseOAuthUI;
@import FirebasePhoneAuthUI;
...
NSArray<id<FUIAuthProvider>> *providers = @[
[[FUIGoogleAuth alloc] init],
[[FUIFacebookAuth alloc] init],
[[FUITwitterAuth alloc] init],
[[FUIPhoneAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]]
];
_authUI.providers = providers;
Google veya Facebook ile oturum açmayı etkinleştirdiyseniz Google ve Facebook kayıt akışlarının sonucu için bir işleyici uygulayın:
Swift
func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String?
if FUIAuth.defaultAuthUI()?.handleOpen(url, sourceApplication: sourceApplication) ?? false {
return true
}
// other URL handling goes here.
return false
}
Objective-C
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary *)options {
NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
}
Son olarak, FUIAuth
üzerinden AuthViewController
öğesinin bir örneğini alın. Ardından bunu uygulamanızın ilk görüntüleme denetleyicisi olarak veya uygulamanızdaki başka bir görünüm denetleyicisinden sunabilirsiniz.
Swift
Oturum açma yöntemi seçiciyi almak için:
let authViewController = authUI.authViewController()
Yalnızca telefon numarasıyla oturum açma özelliğini kullanıyorsanız bunun yerine doğrudan telefon numarası oturum açma görünümünü görüntüleyebilirsiniz:
let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)
Objective-C
Oturum açma yöntemi seçiciyi almak için:
UINavigationController *authViewController = [authUI authViewController];
Yalnızca telefon numarasıyla oturum açma özelliğini kullanıyorsanız bunun yerine doğrudan telefon numarası oturum açma görünümünü görüntüleyebilirsiniz:
FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];
Kimlik doğrulama görünümü gösterildikten ve kullanıcı oturum açtıktan sonra sonuç, didSignInWithUser:error:
yönteminde FirebaseUI Auth temsilcisine döndürülür:
Swift
func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) {
// handle user and error as necessary
}
Objective-C
- (void)authUI:(FUIAuth *)authUI
didSignInWithUser:(nullable FIRUser *)user
error:(nullable NSError *)error {
// Implement this method to handle signed in user or error if any.
}
Oturumu Kapat
FirebaseUI, tüm sosyal kimlik sağlayıcıların yanı sıra Firebase Authentication'ı kapatmak için pratik yöntemler sunar:
Swift
authUI.signOut()
Objective-C
[authUI signOut];
Özelleştirme
FirebaseUI'nin görüntüleme denetleyicilerini alt sınıflandırıp FUIAuth
yetki verme yöntemlerinde belirterek oturum açma ekranlarını özelleştirebilirsiniz:
Swift
func authPickerViewController(forAuthUI authUI: FUIAuth) -> FUIAuthPickerViewController {
return FUICustomAuthPickerViewController(nibName: "FUICustomAuthPickerViewController",
bundle: Bundle.main,
authUI: authUI)
}
func emailEntryViewController(forAuthUI authUI: FUIAuth) -> FUIEmailEntryViewController {
return FUICustomEmailEntryViewController(nibName: "FUICustomEmailEntryViewController",
bundle: Bundle.main,
authUI: authUI)
}
func passwordRecoveryViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordRecoveryViewController {
return FUICustomPasswordRecoveryViewController(nibName: "FUICustomPasswordRecoveryViewController",
bundle: Bundle.main,
authUI: authUI,
email: email)
}
func passwordSignInViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordSignInViewController {
return FUICustomPasswordSignInViewController(nibName: "FUICustomPasswordSignInViewController",
bundle: Bundle.main,
authUI: authUI,
email: email)
}
func passwordSignUpViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordSignUpViewController {
return FUICustomPasswordSignUpViewController(nibName: "FUICustomPasswordSignUpViewController",
bundle: Bundle.main,
authUI: authUI,
email: email)
}
func passwordVerificationViewController(forAuthUI authUI: FUIAuth, email: String, newCredential: AuthCredential) -> FUIPasswordVerificationViewController {
return FUICustomPasswordVerificationViewController(nibName: "FUICustomPasswordVerificationViewController",
bundle: Bundle.main,
authUI: authUI,
email: email,
newCredential: newCredential)
}
Objective-C
- (FUIAuthPickerViewController *)authPickerViewControllerForAuthUI:(FUIAuth *)authUI {
return [[FUICustomAuthPickerViewController alloc] initWithNibName:@"FUICustomAuthPickerViewController"
bundle:[NSBundle mainBundle]
authUI:authUI];
}
- (FUIEmailEntryViewController *)emailEntryViewControllerForAuthUI:(FUIAuth *)authUI {
return [[FUICustomEmailEntryViewController alloc] initWithNibName:@"FUICustomEmailEntryViewController"
bundle:[NSBundle mainBundle]
authUI:authUI];
}
- (FUIPasswordSignInViewController *)passwordSignInViewControllerForAuthUI:(FUIAuth *)authUI
email:(NSString *)email {
return [[FUICustomPasswordSignInViewController alloc] initWithNibName:@"FUICustomPasswordSignInViewController"
bundle:[NSBundle mainBundle]
authUI:authUI
email:email];
}
- (FUIPasswordSignUpViewController *)passwordSignUpViewControllerForAuthUI:(FUIAuth *)authUI
email:(NSString *)email {
return [[FUICustomPasswordSignUpViewController alloc] initWithNibName:@"FUICustomPasswordSignUpViewController"
bundle:[NSBundle mainBundle]
authUI:authUI
email:email];
}
- (FUIPasswordRecoveryViewController *)passwordRecoveryViewControllerForAuthUI:(FUIAuth *)authUI
email:(NSString *)email {
return [[FUICustomPasswordRecoveryViewController alloc] initWithNibName:@"FUICustomPasswordRecoveryViewController"
bundle:[NSBundle mainBundle]
authUI:authUI
email:email];
}
- (FUIPasswordVerificationViewController *)passwordVerificationViewControllerForAuthUI:(FUIAuth *)authUI
email:(NSString *)email
newCredential:(FIRAuthCredential *)newCredential {
return [[FUICustomPasswordVerificationViewController alloc] initWithNibName:@"FUICustomPasswordVerificationViewController"
bundle:[NSBundle mainBundle]
authUI:authUI
email:email
newCredential:newCredential];
}
URL'yi, uygulamanızın hesap oluşturma ekranında bağlantısı verilen hizmet şartlarına göre özelleştirebilirsiniz:
Swift
let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService
Objective-C
authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"];
Son olarak, özel bir paket belirterek kullanıcılarınıza gösterilen mesajları ve istemleri özelleştirebilirsiniz:
Swift
authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.
Objective-C
authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.
Sonraki adımlar
- FirebaseUI'yi kullanma ve özelleştirme hakkında daha fazla bilgi için GitHub'daki BENİOKU dosyasına göz atın.
- FirebaseUI'de bulup sorun yaşarsanız ve bildirmek isterseniz GitHub sorun izleyici'yi kullanın.