FirebaseUI ile iOS uygulamanıza kolayca oturum açma ekleyin

FirebaseUI, için kullanılacak geçişli kullanıcı arayüzü akışları sağlayan Firebase Authentication SDK'sının dokunun. FirebaseUI aşağıdaki avantajları sağlar:

  • Birden fazla sağlayıcı: e-posta/şifre, e-posta bağlantısı, telefon için oturum açma akışları kimlik doğrulama, Google ile Oturum Açma, Facebook Girişi ve Twitter Girişi.
  • Hesap yönetimi: Hesap yönetimi görevlerini; hesap oluşturma ve şifre sıfırlama.
  • Anonim hesap bağlama: Anonim hesapları otomatik olarak bağlamayı sağlayan akışlar. kimlik sağlayıcılarla çalışı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 çatallayıp özelleştirebilirsiniz. uyarlayabilirsiniz.

Başlamadan önce

  1. Firebase'i Apple projenize ekleyin.

  2. FirebaseUI'yi Podfile dosyanıza ekleyin:

    pod 'FirebaseUI'
    

    İsterseniz yalnızca Kimlik Doğrulama bileşenini ve kullandığınız sağlayıcıları ekleyebilirsiniz Şunu kullanmak istiyorum:

    pod 'FirebaseUI/Auth'
    
    pod 'FirebaseUI/Google'
    pod 'FirebaseUI/Facebook'
    pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc
    pod 'FirebaseUI/Phone'
    
  3. Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolunda bulabilirsiniz.

Oturum açma yöntemlerini ayarlayın

Firebase'i kullanıcıların oturumlarında oturum açmak için kullanmadan önce nasıl oturum açacağınızı belirleyin.

E-posta adresi ve şifre

Firebase konsolunda Kimlik Doğrulama bölümünü açın ve e-postayı etkinleştirin ve şifreyle kimlik doğrulama.

  1. Firebase konsolunda Kimlik Doğrulama bölümünü açın. Sign in method (Oturum açma yöntemi) sekmesinde, Email/Password (E-posta/Şifre) sağlayıcısını etkinleştirin. Not e-posta bağlantısıyla oturum açmayı kullanmak için e-posta veya şifreyle oturum açmanın etkinleştirilmesi gerekir.

  2. Aynı bölümde, E-posta bağlantısı (şifresiz oturum açma) oturum açmayı etkinleştirin. yöntemini seçin ve Kaydet'i tıklayın.

  3. Bir FUIEmailAuth başlatarak e-posta bağlantısıyla oturum açmayı etkinleştirebilirsiniz FIREmailLinkAuthSignInMethod örneği. Ayrıca şu belgeleri de sağlamanız gerekir: handleCodeInApp içeren geçerli bir FIRActionCodeSettings nesnesi doğru değerine ayarlanmış.

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];
  1. Ayrıca, başlatıcıya ilettiğiniz URL'yi de beyaz listeye eklemeniz gerekir. Bunu Firebase konsolunda, Kimlik Doğrulama'yı açarak yapabilirsiniz. bölümüne bakın. Oturum açma yöntemi sekmesinde, URL'yi Yetkili alanlar.

  2. Derin bağlantıyı yakaladıktan sonra, bunu kimlik doğrulama kullanıcı arayüzüne iletmeniz gerekir. ele alınabilir.

Swift

FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)

Objective-C

[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
  1. FirebaseUI-iOS'te e-posta bağlantısıyla oturum açma özelliği şununla uyumludur: FirebaseUI-Android ve FirebaseUI-web FirebaseUI-Android'den akışı başlatan bir kullanıcı, ve FirebaseUI-web ile oturum açma işlemini tamamlayın. Aynı durum, akışı sağlar.

Apple

  1. Başlamadan önce ve Apple anonimleştirilmiş verileriyle uyumlu olmalı<br> bölümündeki talimatları uygulayın. gereksinimleri Firebase Apple ile oturum açma rehberini inceleyin.

  2. Yararlanma hakları dosyanıza Apple ile oturum açma özelliğini ekleyin.

  3. 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];
    

Google

  1. Bu eğiticiyi kullanarak Google ile Oturum Açma özelliğini ayarlama

Facebook

  1. Facebook Giriş SDK'sını ayarlamak için şu adımları uygulayın: Facebook'un başlangıç sayfası.

  2. Firebase konsolunda Kimlik Doğrulama bölümünü açın ve Facebook. Facebook ile oturum açmayı etkinleştirmek için Facebook Uygulama Kimliğinizi sağlamanız gerekir ve Facebook Developers Console'dan edinebileceğiniz Uygulama Sırrı'nı da kullanabilirsiniz.

  3. Proje Ayarları > bölümünden Xcode projenizde anahtar zinciri paylaşımını etkinleştirin Özellikler ekranı.

  4. fbFACEBOOK_APP_ID öğesini Xcode projesi.

  5. 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ı
  6. Facebook sağlayıcı örneğini başlatın:

    Swift

    provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
    

    Objective-C

    FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
    

  7. Raporlarınızda Facebook Limited Login, FUIFacebookAuth örneğinde useLimitedLogin özelliğini ayarlayın.

    Swift

    provider.useLimitedLogin = true
    

    Objective-C

    provider.useLimitedLogin = YES;
    

Twitter

  1. Firebase konsolunda Kimlik Doğrulama bölümünü açın ve Twitter Twitter ile oturum açmayı etkinleştirmek için Twitter API'nizi sağlamanız gerekir Twitter Uygulaması'ndan bulabileceğiniz tüketici anahtarı ve sırrı Yönetim konsolu

  2. 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ı

  1. Firebase konsolunda Kimlik Doğrulama bölümünü açın ve telefon numarasıyla oturum açmayı deneyin.

  2. Firebase, telefon numarasıyla oturum açma isteklerinin geri dönüyor. Bunu yapmanın yollarından biri APN'ler bildirimleri etkinleştirebilirsiniz. Görüntüleyin Uygulama doğrulamayı etkinleştirme inceleyebilirsiniz.

    Firebase Authentication ile kullanılacak APNs bildirimlerini etkinleştirmek için:

    1. Xcode'da push bildirimlerini etkinleştirin belirleneceğini konuşacağız.

    2. 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.

      1. 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.

      2. 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.

      3. Anahtarınızı kaydettiğiniz konuma gidin, anahtarı seçin ve . Anahtarın anahtar kimliğini ekleyin ( Apple Developer Member Center) oturum açın Yükle.

      Zaten bir APNs sertifikanız varsa sertifikayı yükleyebilirsiniz. .

  3. Bir cihazda APNs bildirimleri alınamadığında Firebase, İstekleri doğrulamak için reCAPTCHA'yı kullanın.

    reCAPTCHA doğrulamasını etkinleştirmek için Xcode'da aşağıdakileri yapın:

    1. 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.
    2. + 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):

      Xcode&#39;un özel URL şeması kurulum arayüzünün ekran görüntüsü
  4. İsteğe bağlı: Firebase, Firebase tarafından gönderilen sessiz push bildirimlerini yönetmek için uygulamanın APNs jetonunu ve özel şema yönlendirmesine otomatik olarak müdahale etmek için .

    Kaydırma özelliğini kullanmamayı tercih ederseniz Ek: Kaydırma olmadan telefon oturum açma özelliğini kullanma bölümüne bakın. bölümüne göz atın.

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ı:

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 veya bunu uygulamanızın ilk görüntüleme denetleyicisi olarak veya görüntüleyebilirsiniz.

Swift

Oturum açma yöntemi seçiciyi almak için:

let authViewController = authUI.authViewController()

Yalnızca telefon numarasıyla oturum açmayı kullanıyorsanız telefon numarasını görüntüleyebilirsiniz doğrudan oturum açma görünümünü seçebilirsiniz:

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çmayı kullanıyorsanız telefon numarasını görüntüleyebilirsiniz doğrudan oturum açma görünümünü seçebilirsiniz:

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: içinde FirebaseUI Auth temsilcisine geri döndü yöntem:

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ın

FirebaseUI, Firebase Authentication'dan çıkış yapmak için kolay yöntemler sunar sosyal kimlik sağlayıcılarının yanı sıra şunlara da dikkat etmelisiniz:

Swift

authUI.signOut()

Objective-C

[authUI signOut];

Özelleştirme

FirebaseUI'nin görünümünü alt sınıflandırarak oturum açma ekranlarını özelleştirebilirsiniz denetleyicileri etkinleştirin ve bunları FUIAuth kullanıcısının yetki verme yöntemlerinde belirtin:

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];
}

Uygulamanızın şurada bağlantısı verilen hizmet şartlarının URL'sini özelleştirebilirsiniz: hesap oluşturma ekranı:

Swift

let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService

Objective-C

authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"];

Son olarak da kullanıcılarınıza gösterilen mesajları ve istemleri, Özel bir paket belirterek:

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 BENİOKU dosyasına gidin.
  • FirebaseUI'de sorun görür ve bildirmek isterseniz GitHub sorun izleyici.