FirebaseUI , uygulamanızda kullanım için açılır UI akışları sağlayan Firebase Authentication SDK'nın üzerine kurulmuş bir kitaplıktır. FirebaseUI aşağıdaki avantajları sağlar:
- Birden çok sağlayıcı : e-posta/parola, e-posta bağlantısı, telefonla kimlik doğrulama, Google Oturum Açma, Facebook Oturum Açma ve Twitter Oturum Açma için oturum açma akışları.
- Hesap yönetimi : hesap oluşturma ve parola sıfırlama gibi hesap yönetimi görevlerini yerine getirmek için akışlar.
- Anonim hesap bağlama : anonim hesapları kimlik sağlayıcılara otomatik olarak bağlamak için akışlar.
- Özelleştirilebilir : FirebaseUI'nin görünümünü uygulamanıza uyacak şekilde özelleştirin. Ayrıca, FirebaseUI açık kaynak olduğu için projeyi çatallayabilir ve tam olarak ihtiyaçlarınıza göre özelleştirebilirsiniz.
Sen başlamadan önce
Pod dosyanıza FirebaseUI ekleyin:
pod 'FirebaseUI'
İsterseniz yalnızca Auth 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
Kullanıcılarda oturum açmak için Firebase'i kullanmadan önce, desteklemek istediğiniz oturum açma yöntemlerini etkinleştirmeli ve yapılandırmalısınız.
E-posta adresi ve şifre
Firebase konsolunda , Kimlik Doğrulama bölümünü açın ve e-posta ve parola kimlik doğrulamasını 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/Parola sağlayıcısını etkinleştirin. E-posta bağlantısı oturum açmayı kullanmak için e-posta/şifre oturum açmanın etkinleştirilmesi gerektiğini unutmayın.
Aynı bölümde, E-posta bağlantısı (parolasız oturum açma) oturum açma yöntemini etkinleştirin ve Kaydet'i tıklayın .
FIREmailLinkAuthSignInMethod
ile birFUIEmailAuth
örneğini başlatarak e-posta bağlantısı oturum açmayı etkinleştirebilirsiniz. Ayrıca,handleCodeInApp
true olarak ayarlanmış geçerli birFIRActionCodeSettings
nesnesi sağlamanız gerekecektir.
Süratli
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)
Amaç-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 beyaz listeye eklemeniz gerekir. Bunu Firebase konsolunda yapabilirsiniz, Kimlik Doğrulama bölümünü açın. Oturum açma yöntemi sekmesinde, URL'yi Yetkili etki alanları altına ekleyin.
Derin bağlantıyı yakaladığınızda, ele alınabilmesi için onu yetkilendirme kullanıcı arayüzüne iletmeniz gerekecektir.
Süratli
FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)
Amaç-C
[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
- FirebaseUI-iOS'ta e-posta bağlantısı oturum açma, FirebaseUI-Android ve FirebaseUI-web ile uyumludur; burada akışı FirebaseUI-Android'den başlatan bir kullanıcı, bağlantıyı açabilir ve FirebaseUI-web ile oturum açmayı tamamlayabilir. Aynı şey ters akış için de geçerlidir.
Elma
Firebase Apple ile Giriş Yap kılavuzundaki Başlamadan önce ve Apple anonim veri gereksinimlerine uyun bölümlerini izleyin.
Yetkilendirme dosyanıza Apple ile Giriş Yap özelliğini ekleyin.
Apple ile Giriş Yap için yapılandırılmış bir OAuth sağlayıcı örneğini başlatın:
Süratli
provider = FUIOAuth.appleAuthProvider()
Amaç-C
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
Firebase konsolunda , Kimlik Doğrulama bölümünü açın ve Google ile Oturum Açmayı etkinleştirin.
Xcode projenize ters çevrilmiş müşteri kimliğinizi bir URL şeması olarak ekleyin. Bu değeri
GoogleService-Info.plist
dosyasında bulabilirsiniz.
Facebook'un başlarken sayfasını takip ederek Facebook Giriş SDK'sını kurun.
Firebase konsolunda , Kimlik Doğrulama bölümünü açın ve Facebook'u etkinleştirin. Facebook'ta oturum açmayı etkinleştirmek için Facebook Geliştiricileri konsolunda alabileceğiniz Facebook Uygulama Kimliğinizi ve Uygulama Sırrınızı sağlamanız gerekir.
Proje Ayarları > Yetenekler ekranından Xcode projenizde anahtar zinciri paylaşımını etkinleştirin.
Xcode projenize bir URL şeması olarak
fb FACEBOOK_APP_ID
ekleyin.Facebook Uygulama Kimliğinizi ve görünen adınızı
Info.plist
dosyasına ekleyin:Anahtar Değer FacebookAppID FACEBOOK_APP_ID
(örneğin,1234567890
)FacebookEkranAdı Uygulamanızın adı Bir Facebook sağlayıcı örneğini başlatın:
Süratli
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
Amaç-C
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
Facebook Sınırlı Oturum Açma özelliğini kullanmak istiyorsanız,
FUIFacebookAuth
örneğindeuseLimitedLogin
özelliğini ayarlayın.Süratli
provider.useLimitedLogin = true
Amaç-C
provider.useLimitedLogin = YES;
heyecan
Firebase konsolunda , Kimlik Doğrulama bölümünü açın ve Twitter'ı etkinleştirin. Twitter oturum açmayı etkinleştirmek için Twitter Uygulama Yönetimi konsolundan alabileceğiniz Twitter API tüketici anahtarınızı ve sırrınızı sağlamalısınız.
Twitter girişi için yapılandırılmış bir OAuth sağlayıcı örneği başlatın:
Süratli
provider = FUIOAuth.twitterAuthProvider()
Amaç-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. Bunun gerçekleştirilme yollarından biri APN bildirimleridir. Ayrıntılar için Uygulama doğrulamasını etkinleştirme bölümüne bakın.
APNs bildirimlerini Firebase Authentication ile kullanmak üzere etkinleştirmek için:
Xcode'da projeniz için anında iletme 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 Üye Merkezi'nde bir tane oluşturduğunuzdan emin olun.
Firebase konsolunda projenizin içinde dişli simgesini seçin, Project Settings öğesini seçin ve ardından Cloud Messaging sekmesini seçin.
iOS uygulama yapılandırması altındaki APNs kimlik doğrulama anahtarında , Yükle düğmesini tıklayın.
Anahtarınızı kaydettiğiniz konuma göz atın, onu seçin ve Aç'ı tıklayın. Anahtarın anahtar kimliğini ekleyin ( Apple Geliştirici Üye Merkezi'nde bulunur ) ve Yükle'yi tıklayın.
Zaten bir APNs sertifikanız varsa, bunun yerine sertifikayı yükleyebilirsiniz.
Bir cihazda APN bildirimleri alınamadığında Firebase, istekleri doğrulamak için reCAPTCHA'yı kullanır.
reCAPTCHA doğrulamasını etkinleştirmek için, tersine çevrilmiş müşteri kimliğinizi henüz bir URL şeması olarak eklemediyseniz (örneğin, Google ile Oturum Açmayı etkinleştirmek için), bunu Xcode projenizde yapın. Bu değeri
GoogleService-Info.plist
dosyasında bulabilirsiniz.İsteğe bağlı : Firebase, uygulamanızın APNs belirtecini otomatik olarak almak, Firebase'in uygulamanıza gönderdiği sessiz anında iletme bildirimlerini işlemek ve doğrulama sırasında reCAPTCHA doğrulama sayfasından özel şema yönlendirmesini otomatik olarak engellemek için yöntem döndürme yöntemini kullanır.
Swizzling'i kullanmamayı tercih ederseniz, bkz. Ek: Firebase SDK kimlik doğrulama belgelerinde swizzling olmadan telefonda oturum açmayı kullanma .
Kayıt olmak
FirebaseUI oturum açma akışını başlatmak için önce FirebaseUI'yi başlatın:
Süratli
import FirebaseAuthUI
/* ... */
FirebaseApp.configure()
let authUI = FUIAuth.defaultAuthUI()
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self
Amaç-C
@import FirebaseAuthUI;
...
[FIRApp configure];
FUIAuth *authUI = [FUIAuth defaultAuthUI];
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self;
Ardından, desteklemek istediğiniz oturum açma yöntemlerini kullanmak için FirebaseUI'yi yapılandırın:
Süratli
import FirebaseAuthUI
import FirebaseFacebookAuthUI
import FirebaseGoogleAuthUI
import FirebaseOAuthUI
import FirebasePhoneAuthUI
let providers: [FUIAuthProvider] = [
FUIGoogleAuth(),
FUIFacebookAuth(),
FUITwitterAuth(),
FUIPhoneAuth(authUI:FUIAuth.defaultAuthUI()),
]
self.authUI.providers = providers
Amaç-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 oturum açmayı etkinleştirdiyseniz, Google ve Facebook kayıt akışlarının sonucu için bir işleyici uygulayın:
Süratli
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
}
Amaç-C
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary *)options {
NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
}
Son olarak, AuthViewController
bir FUIAuth
örneği alın. Ardından, onu uygulamanızın ilk görünüm denetleyicisi olarak sunabilir veya uygulamanızdaki başka bir görünüm denetleyicisinden sunabilirsiniz.
Süratli
Oturum açma yöntemi seçicisini almak için:
let authViewController = authUI.authViewController()
Yalnızca telefon numarasıyla oturum açmayı 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)
Amaç-C
Oturum açma yöntemi seçicisini almak için:
UINavigationController *authViewController = [authUI authViewController];
Yalnızca telefon numarasıyla oturum açmayı 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];
Siz kimlik doğrulama görünümünü sunduktan ve kullanıcı oturum açtıktan sonra, sonuç didSignInWithUser:error:
yönteminde FirebaseUI Auth temsilcisine döndürülür:
Süratli
func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) {
// handle user and error as necessary
}
Amaç-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ın yanı sıra Firebase Authentication'dan çıkış yapmak için kolaylık yöntemleri sağlar:
Süratli
authUI.signOut()
Amaç-C
[authUI signOut];
özelleştirme
FirebaseUI'nin görünüm denetleyicilerini alt sınıflara ayırarak ve bunları FUIAuth
temsilci yöntemlerinde belirterek oturum açma ekranlarını özelleştirebilirsiniz:
Süratli
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)
}
Amaç-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, hesap oluşturma ekranında bağlantılı olan uygulamanızın hizmet şartlarına göre özelleştirebilirsiniz:
Süratli
let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService
Amaç-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:
Süratli
authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.
Amaç-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 README dosyasına bakın.
- FirebaseUI'de bulur ve sorun çıkarırsanız ve bunu bildirmek isterseniz GitHub sorun izleyicisini kullanın.