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
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'
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.
Autenticação de link de e-mail
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.
Na mesma seção, ative o método de login com link de e-mail (entrada sem senha) e clique em Salvar .
Você pode habilitar o login de link de e-mail inicializando uma instância
FUIEmailAuth
comFIREmailLinkAuthSignInMethod
. Você também precisará fornecer um objetoFIRActionCodeSettings
válido comhandleCodeInApp
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];
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 .
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];
- 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çã
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 .
Adicione o recurso Entrar com a Apple ao seu arquivo de direitos.
Inicialize uma instância do provedor OAuth configurada para Entrar com a Apple:
Rápido
provider = FUIOAuth.appleAuthProvider()
Objective-C
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
No console do Firebase , abra a seção Autenticação e ative o Login do Google.
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
.
Configure o SDK de login do Facebook seguindo a página de introdução do Facebook .
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.
Ative o compartilhamento de chaves em seu projeto Xcode na tela Project Settings > Capabilities .
Adicione
fb FACEBOOK_APP_ID
como um esquema de URL em seu projeto Xcode.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 Inicialize uma instância do provedor do Facebook:
Rápido
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
Objective-C
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
Se quiser usar o Login limitado do Facebook , defina a propriedade
useLimitedLogin
na instânciaFUIFacebookAuth
.Rápido
provider.useLimitedLogin = true
Objective-C
provider.useLimitedLogin = YES;
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.
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
No console do Firebase , abra a seção Autenticação e ative o login com número de telefone.
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:
No Xcode, ative as notificações por push para seu projeto.
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 .
Dentro do seu projeto no Firebase console, selecione o ícone de engrenagem, selecione Project Settings e, em seguida, selecione a guia Cloud Messaging .
Em Chave de autenticação de APNs em Configuração do aplicativo iOS , clique no botão Carregar .
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.
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
.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
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'
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.
Autenticação de link de e-mail
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.
Na mesma seção, ative o método de login com link de e-mail (entrada sem senha) e clique em Salvar .
Você pode habilitar o login de link de e-mail inicializando uma instância
FUIEmailAuth
comFIREmailLinkAuthSignInMethod
. Você também precisará fornecer um objetoFIRActionCodeSettings
válido comhandleCodeInApp
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];
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 .
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];
- 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çã
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 .
Adicione o recurso Entrar com a Apple ao seu arquivo de direitos.
Inicialize uma instância do provedor OAuth configurada para Entrar com a Apple:
Rápido
provider = FUIOAuth.appleAuthProvider()
Objective-C
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
No console do Firebase , abra a seção Autenticação e ative o Login do Google.
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
.
Configure o SDK de login do Facebook seguindo a página de introdução do Facebook .
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.
Ative o compartilhamento de chaves em seu projeto Xcode na tela Project Settings > Capabilities .
Adicione
fb FACEBOOK_APP_ID
como um esquema de URL em seu projeto Xcode.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 Inicialize uma instância do provedor do Facebook:
Rápido
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
Objective-C
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
Se quiser usar o Login limitado do Facebook , defina a propriedade
useLimitedLogin
na instânciaFUIFacebookAuth
.Rápido
provider.useLimitedLogin = true
Objective-C
provider.useLimitedLogin = YES;
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.
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
No console do Firebase , abra a seção Autenticação e ative o login com número de telefone.
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:
No Xcode, ative as notificações por push para seu projeto.
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 .
Dentro do seu projeto no Firebase console, selecione o ícone de engrenagem, selecione Project Settings e, em seguida, selecione a guia Cloud Messaging .
Em Chave de autenticação de APNs em Configuração do aplicativo iOS , clique no botão Carregar .
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.
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
.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 .