O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Adicione facilmente o login ao seu aplicativo iOS com o FirebaseUI

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

FirebaseUI é uma biblioteca construída sobre o Firebase Authentication SDK que fornece fluxos de IU drop-in para uso em seu aplicativo. FirebaseUI oferece os seguintes benefícios:

  • Vários provedores : fluxos de login para e-mail/senha, link de e-mail, autenticação por telefone, login do Google, login do Facebook e login do Twitter.
  • Gerenciamento de contas : fluxos para lidar com tarefas de gerenciamento de contas, como criação de contas e redefinições de senha.
  • Vinculação de contas anônimas : fluxos para vincular automaticamente contas anônimas a provedores de identidade.
  • Personalizável : personalize a aparência do FirebaseUI para corresponder ao seu aplicativo. Além disso, como o FirebaseUI é de código aberto, você pode criar um fork do projeto e personalizá-lo exatamente de acordo com suas necessidades.

Antes de você começar

  1. Adicione o Firebase ao seu projeto Apple .

  2. Adicione FirebaseUI ao seu Podfile:

    pod 'FirebaseUI'
    

    Se preferir, você pode adicionar apenas o componente Auth e os provedores que deseja usar:

    pod 'FirebaseUI/Auth'
    
    pod 'FirebaseUI/Google'
    pod 'FirebaseUI/Facebook'
    pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc
    pod 'FirebaseUI/Phone'
    
  3. Se você ainda não conectou seu aplicativo ao projeto do Firebase, faça-o no console do Firebase .

Configurar métodos de login

Antes de poder usar o Firebase para fazer login de usuários, você deve ativar e configurar os métodos de login que deseja oferecer suporte.

Endereço de e-mail e senha

No console do Firebase , abra a seção Autenticação e ative a autenticação de e-mail e senha.

  1. No console do Firebase , abra a seção Autenticação . Na guia Método de login , ative o provedor de e- mail/senha . Observe que o login por e-mail/senha deve estar ativado para usar o login por link de email.

  2. Na mesma seção, ative o método de login com link de e-mail (entrada sem senha) e clique em Salvar .

  3. Você pode habilitar o login de link de e-mail inicializando uma instância FUIEmailAuth com FIREmailLinkAuthSignInMethod . Você também precisará fornecer um objeto FIRActionCodeSettings válido com handleCodeInApp definido como true.

Rápido

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. Além disso, você precisa colocar na lista de permissões o URL passado para o inicializador. Você pode fazer isso no console do Firebase , abra a seção Autenticação . Na guia Método de login , adicione a URL em Domínios autorizados .

  2. Depois de capturar o link direto, você precisará passá-lo para a IU de autenticação para que possa ser manipulado.

Rápido

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

Objective-C

[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
  1. O login do link de e-mail no FirebaseUI-iOS é compatível com FirebaseUI-Android e FirebaseUI-web, onde um usuário iniciando o fluxo do FirebaseUI-Android pode abrir o link e concluir o login com FirebaseUI-web. O mesmo vale para o fluxo oposto.

Maçã

  1. Siga as seções Antes de começar e Cumprir com os requisitos de dados anônimos da Apple no guia Login do Firebase com a Apple .

  2. Adicione o recurso Entrar com a Apple ao seu arquivo de direitos.

  3. Inicialize uma instância do provedor OAuth configurada para Entrar com a Apple:

    Rápido

    provider = FUIOAuth.appleAuthProvider()
    

    Objective-C

    FUIOAuth *provider = [FUIOAuth appleAuthProvider];
    

Google

  1. No console do Firebase , abra a seção Autenticação e ative o Login do Google.

  2. Adicione seu ID de cliente invertido como um esquema de URL em seu projeto Xcode. Você pode encontrar esse valor no arquivo GoogleService-Info.plist .

Facebook

  1. Configure o SDK de login do Facebook seguindo a página de introdução do Facebook .

  2. No console do Firebase , abra a seção Autenticação e habilite o Facebook. Para habilitar o login do Facebook, você deve fornecer seu Facebook App ID e App Secret, que você pode obter no Facebook Developers console.

  3. Ative o compartilhamento de chaves em seu projeto Xcode na tela Project Settings > Capabilities .

  4. Adicione fb FACEBOOK_APP_ID como um esquema de URL em seu projeto Xcode.

  5. Adicione seu ID do aplicativo do Facebook e nome de exibição ao arquivo Info.plist :

    Chave Valor
    FacebookAppID FACEBOOK_APP_ID (por exemplo, 1234567890 )
    FacebookDisplayName O nome do seu aplicativo
  6. Inicialize uma instância do provedor do Facebook:

    Rápido

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

    Objective-C

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

  7. Se quiser usar o Login limitado do Facebook , defina a propriedade useLimitedLogin na instância FUIFacebookAuth .

    Rápido

    provider.useLimitedLogin = true
    

    Objective-C

    provider.useLimitedLogin = YES;
    

Twitter

  1. No console do Firebase , abra a seção Autenticação e habilite o Twitter. Para habilitar o login do Twitter, você deve fornecer sua chave e segredo de consumidor da API do Twitter, que você pode obter no console de gerenciamento de aplicativos do Twitter.

  2. Inicialize uma instância do provedor OAuth configurada para login no Twitter:

    Rápido

    provider = FUIOAuth.twitterAuthProvider()
    

    Objective-C

    FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
    

Número de telefone

  1. No console do Firebase , abra a seção Autenticação e ative o login com número de telefone.

  2. O Firebase deve ser capaz de verificar se as solicitações de login do número de telefone vêm do seu aplicativo. Uma das maneiras de fazer isso é por meio de notificações de APNs. Consulte Ativar verificação de aplicativo para obter detalhes.

    Para ativar as notificações de APNs para uso com o Firebase Authentication:

    1. No Xcode, ative as notificações por push para seu projeto.

    2. Carregue sua chave de autenticação de APNs para o Firebase. Se você ainda não tiver uma chave de autenticação de APNs, certifique-se de criar uma no Apple Developer Member Center .

      1. Dentro do seu projeto no Firebase console, selecione o ícone de engrenagem, selecione Project Settings e, em seguida, selecione a guia Cloud Messaging .

      2. Em Chave de autenticação de APNs em Configuração do aplicativo iOS , clique no botão Carregar .

      3. Navegue até o local onde você salvou sua chave, selecione-a e clique em Abrir . Adicione o ID da chave (disponível no Apple Developer Member Center ) e clique em Upload .

      Se você já tiver um certificado de APNs, poderá fazer o upload do certificado.

  3. Quando as notificações de APNs não podem ser recebidas em um dispositivo, o Firebase usa o reCAPTCHA para verificar as solicitações.

    Para habilitar a verificação reCAPTCHA, se você ainda não adicionou seu ID de cliente reverso como um esquema de URL (por exemplo, para habilitar o Login do Google), faça-o em seu projeto Xcode. Você pode encontrar esse valor no arquivo GoogleService-Info.plist .

  4. Opcional : o Firebase usa o método swizzling para obter automaticamente o token de APNs do seu aplicativo, para lidar com as notificações push silenciosas que o Firebase envia para o seu aplicativo e para interceptar automaticamente o redirecionamento de esquema personalizado da página de verificação reCAPTCHA durante a verificação.

    Se preferir não usar swizzling, consulte o Apêndice: Usando login por telefone sem swizzling nos documentos de autenticação do SDK do Firebase.

Entrar

Para iniciar o fluxo de login do FirebaseUI, primeiro inicialize o FirebaseUI:

Rápido

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;

Em seguida, configure o FirebaseUI para usar os métodos de login que você deseja oferecer suporte:

Rápido

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;

Se você ativou o login do Google ou do Facebook, implemente um manipulador para o resultado dos fluxos de inscrição do Google e do Facebook:

Rápido

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

Por fim, obtenha uma instância de AuthViewController de FUIAuth . Você pode apresentá-lo como o primeiro controlador de exibição do seu aplicativo ou apresentá-lo de outro controlador de exibição em seu aplicativo.

Rápido

Para obter o seletor de método de login:

let authViewController = authUI.authViewController()

Se você usar apenas o login com número de telefone, poderá exibir a exibição de login com número de telefone diretamente:

let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)

Objective-C

Para obter o seletor de método de login:

UINavigationController *authViewController = [authUI authViewController];

Se você usar apenas o login com número de telefone, poderá exibir a exibição de login com número de telefone diretamente:

FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];

Depois de apresentar a visualização de autenticação e o usuário entrar, o resultado é retornado ao delegado FirebaseUI Auth no método didSignInWithUser:error: ::

Rápido

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

Sair

O FirebaseUI fornece métodos convenientes para sair do Firebase Authentication, bem como de todos os provedores de identidade social:

Rápido

authUI.signOut()

Objective-C

[authUI signOut];

Costumização

Você pode personalizar as telas de login criando uma subclasse dos controladores de visualização do FirebaseUI e especificando-os nos métodos delegados de FUIAuth :

Rápido

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

Você pode personalizar a URL para os termos de serviço do seu aplicativo, que estão vinculados na tela de criação da conta:

Rápido

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

Objective-C

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

Por fim, você pode personalizar as mensagens e os prompts exibidos aos seus usuários especificando um pacote personalizado:

Rápido

authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.

Objective-C

authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.

Próximos passos

  • Para obter mais informações sobre como usar e personalizar o FirebaseUI, consulte o arquivo README no GitHub.
  • Se você encontrar um problema no FirebaseUI e quiser denunciá-lo, use o rastreador de problemas do GitHub .
,

FirebaseUI é uma biblioteca construída sobre o Firebase Authentication SDK que fornece fluxos de IU drop-in para uso em seu aplicativo. FirebaseUI oferece os seguintes benefícios:

  • Vários provedores : fluxos de login para e-mail/senha, link de e-mail, autenticação por telefone, login do Google, login do Facebook e login do Twitter.
  • Gerenciamento de contas : fluxos para lidar com tarefas de gerenciamento de contas, como criação de contas e redefinições de senha.
  • Vinculação de contas anônimas : fluxos para vincular automaticamente contas anônimas a provedores de identidade.
  • Personalizável : personalize a aparência do FirebaseUI para corresponder ao seu aplicativo. Além disso, como o FirebaseUI é de código aberto, você pode criar um fork do projeto e personalizá-lo exatamente de acordo com suas necessidades.

Antes de você começar

  1. Adicione o Firebase ao seu projeto Apple .

  2. Adicione FirebaseUI ao seu Podfile:

    pod 'FirebaseUI'
    

    Se preferir, você pode adicionar apenas o componente Auth e os provedores que deseja usar:

    pod 'FirebaseUI/Auth'
    
    pod 'FirebaseUI/Google'
    pod 'FirebaseUI/Facebook'
    pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc
    pod 'FirebaseUI/Phone'
    
  3. Se você ainda não conectou seu aplicativo ao projeto do Firebase, faça-o no console do Firebase .

Configurar métodos de login

Antes de poder usar o Firebase para fazer login de usuários, você deve ativar e configurar os métodos de login que deseja oferecer suporte.

Endereço de e-mail e senha

No console do Firebase , abra a seção Autenticação e ative a autenticação de e-mail e senha.

  1. No console do Firebase , abra a seção Autenticação . Na guia Método de login , ative o provedor de e- mail/senha . Observe que o login por e-mail/senha deve estar ativado para usar o login por link de email.

  2. Na mesma seção, ative o método de login com link de e-mail (entrada sem senha) e clique em Salvar .

  3. Você pode habilitar o login de link de e-mail inicializando uma instância FUIEmailAuth com FIREmailLinkAuthSignInMethod . Você também precisará fornecer um objeto FIRActionCodeSettings válido com handleCodeInApp definido como true.

Rápido

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. Além disso, você precisa colocar na lista de permissões o URL passado para o inicializador. Você pode fazer isso no console do Firebase , abra a seção Autenticação . Na guia Método de login , adicione a URL em Domínios autorizados .

  2. Depois de capturar o link direto, você precisará passá-lo para a IU de autenticação para que possa ser manipulado.

Rápido

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

Objective-C

[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
  1. O login do link de e-mail no FirebaseUI-iOS é compatível com FirebaseUI-Android e FirebaseUI-web, onde um usuário iniciando o fluxo do FirebaseUI-Android pode abrir o link e concluir o login com FirebaseUI-web. O mesmo vale para o fluxo oposto.

Maçã

  1. Siga as seções Antes de começar e Cumprir com os requisitos de dados anônimos da Apple no guia Login do Firebase com a Apple .

  2. Adicione o recurso Entrar com a Apple ao seu arquivo de direitos.

  3. Inicialize uma instância do provedor OAuth configurada para Entrar com a Apple:

    Rápido

    provider = FUIOAuth.appleAuthProvider()
    

    Objective-C

    FUIOAuth *provider = [FUIOAuth appleAuthProvider];
    

Google

  1. No console do Firebase , abra a seção Autenticação e ative o Login do Google.

  2. Adicione seu ID de cliente invertido como um esquema de URL em seu projeto Xcode. Você pode encontrar esse valor no arquivo GoogleService-Info.plist .

Facebook

  1. Configure o SDK de login do Facebook seguindo a página de introdução do Facebook .

  2. No console do Firebase , abra a seção Autenticação e habilite o Facebook. Para habilitar o login do Facebook, você deve fornecer seu Facebook App ID e App Secret, que você pode obter no Facebook Developers console.

  3. Ative o compartilhamento de chaves em seu projeto Xcode na tela Project Settings > Capabilities .

  4. Adicione fb FACEBOOK_APP_ID como um esquema de URL em seu projeto Xcode.

  5. Adicione seu ID do aplicativo do Facebook e nome de exibição ao arquivo Info.plist :

    Chave Valor
    FacebookAppID FACEBOOK_APP_ID (por exemplo, 1234567890 )
    FacebookDisplayName O nome do seu aplicativo
  6. Inicialize uma instância do provedor do Facebook:

    Rápido

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

    Objective-C

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

  7. Se quiser usar o Login limitado do Facebook , defina a propriedade useLimitedLogin na instância FUIFacebookAuth .

    Rápido

    provider.useLimitedLogin = true
    

    Objective-C

    provider.useLimitedLogin = YES;
    

Twitter

  1. No console do Firebase , abra a seção Autenticação e habilite o Twitter. Para habilitar o login do Twitter, você deve fornecer sua chave e segredo de consumidor da API do Twitter, que você pode obter no console de gerenciamento de aplicativos do Twitter.

  2. Inicialize uma instância do provedor OAuth configurada para login no Twitter:

    Rápido

    provider = FUIOAuth.twitterAuthProvider()
    

    Objective-C

    FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
    

Número de telefone

  1. No console do Firebase , abra a seção Autenticação e ative o login com número de telefone.

  2. O Firebase deve ser capaz de verificar se as solicitações de login do número de telefone vêm do seu aplicativo. Uma das maneiras de fazer isso é por meio de notificações de APNs. Consulte Ativar verificação de aplicativo para obter detalhes.

    Para ativar as notificações de APNs para uso com o Firebase Authentication:

    1. No Xcode, ative as notificações por push para seu projeto.

    2. Carregue sua chave de autenticação de APNs para o Firebase. Se você ainda não tiver uma chave de autenticação de APNs, certifique-se de criar uma no Apple Developer Member Center .

      1. Dentro do seu projeto no Firebase console, selecione o ícone de engrenagem, selecione Project Settings e, em seguida, selecione a guia Cloud Messaging .

      2. Em Chave de autenticação de APNs em Configuração do aplicativo iOS , clique no botão Carregar .

      3. Navegue até o local onde você salvou sua chave, selecione-a e clique em Abrir . Adicione o ID da chave (disponível no Apple Developer Member Center ) e clique em Upload .

      Se você já tiver um certificado de APNs, poderá fazer o upload do certificado.

  3. Quando as notificações de APNs não podem ser recebidas em um dispositivo, o Firebase usa o reCAPTCHA para verificar as solicitações.

    Para habilitar a verificação reCAPTCHA, se você ainda não adicionou seu ID de cliente reverso como um esquema de URL (por exemplo, para habilitar o Login do Google), faça-o em seu projeto Xcode. Você pode encontrar esse valor no arquivo GoogleService-Info.plist .

  4. Opcional : o Firebase usa o método swizzling para obter automaticamente o token de APNs do seu aplicativo, para lidar com as notificações push silenciosas que o Firebase envia para o seu aplicativo e para interceptar automaticamente o redirecionamento de esquema personalizado da página de verificação reCAPTCHA durante a verificação.

    Se preferir não usar swizzling, consulte o Apêndice: Usando login por telefone sem swizzling nos documentos de autenticação do SDK do Firebase.

Entrar

Para iniciar o fluxo de login do FirebaseUI, primeiro inicialize o FirebaseUI:

Rápido

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;

Em seguida, configure o FirebaseUI para usar os métodos de login que você deseja oferecer suporte:

Rápido

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;

Se você ativou o login do Google ou do Facebook, implemente um manipulador para o resultado dos fluxos de inscrição do Google e do Facebook:

Rápido

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

Por fim, obtenha uma instância de AuthViewController de FUIAuth . Você pode apresentá-lo como o primeiro controlador de exibição do seu aplicativo ou apresentá-lo de outro controlador de exibição em seu aplicativo.

Rápido

Para obter o seletor de método de login:

let authViewController = authUI.authViewController()

Se você usar apenas o login com número de telefone, poderá exibir a exibição de login com número de telefone diretamente:

let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)

Objective-C

Para obter o seletor de método de login:

UINavigationController *authViewController = [authUI authViewController];

Se você usar apenas o login com número de telefone, poderá exibir a exibição de login com número de telefone diretamente:

FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];

Depois de apresentar a visualização de autenticação e o usuário entrar, o resultado é retornado ao delegado FirebaseUI Auth no método didSignInWithUser:error: ::

Rápido

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

Sair

O FirebaseUI fornece métodos convenientes para sair do Firebase Authentication, bem como de todos os provedores de identidade social:

Rápido

authUI.signOut()

Objective-C

[authUI signOut];

Costumização

Você pode personalizar as telas de login criando uma subclasse dos controladores de visualização do FirebaseUI e especificando-os nos métodos delegados de FUIAuth :

Rápido

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

Você pode personalizar a URL para os termos de serviço do seu aplicativo, que estão vinculados na tela de criação da conta:

Rápido

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

Objective-C

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

Por fim, você pode personalizar as mensagens e os prompts exibidos aos seus usuários especificando um pacote personalizado:

Rápido

authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.

Objective-C

authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.

Próximos passos

  • Para obter mais informações sobre como usar e personalizar o FirebaseUI, consulte o arquivo README no GitHub.
  • Se você encontrar um problema no FirebaseUI e quiser denunciá-lo, use o rastreador de problemas do GitHub .