FirebaseUI es una biblioteca construida sobre el SDK de autenticación de Firebase que proporciona flujos de IU directos para usar en su aplicación. FirebaseUI proporciona los siguientes beneficios:
- Múltiples proveedores : flujos de inicio de sesión para correo electrónico/contraseña, enlace de correo electrónico, autenticación telefónica, inicio de sesión de Google, inicio de sesión de Facebook e inicio de sesión de Twitter.
- Gestión de cuentas : flujos para gestionar tareas de gestión de cuentas, como la creación de cuentas y el restablecimiento de contraseñas.
- Vinculación de cuentas anónimas : flujos para vincular automáticamente cuentas anónimas a proveedores de identidad.
- Personalizable : personalice el aspecto de FirebaseUI para que coincida con su aplicación. Además, debido a que FirebaseUI es de código abierto, puede bifurcar el proyecto y personalizarlo exactamente según sus necesidades.
Antes de que empieces
Agregue FirebaseUI a su Podfile:
pod 'FirebaseUI'
Si lo prefiere, puede agregar solo el componente Auth y los proveedores que desea utilizar:
pod 'FirebaseUI/Auth' pod 'FirebaseUI/Google' pod 'FirebaseUI/Facebook' pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc pod 'FirebaseUI/Phone'
Si aún no ha conectado su aplicación a su proyecto de Firebase, hágalo desde la consola de Firebase .
Configurar métodos de inicio de sesión
Antes de que pueda usar Firebase para iniciar sesión en los usuarios, debe habilitar y configurar los métodos de inicio de sesión que desea admitir.
Dirección de correo electrónico y contraseña
En Firebase console , abra la sección Autenticación y habilite la autenticación por correo electrónico y contraseña.
Autenticación de enlace de correo electrónico
En Firebase console , abra la sección Autenticación . En la pestaña Método de inicio de sesión , habilite el proveedor de correo electrónico/contraseña . Tenga en cuenta que el inicio de sesión con correo electrónico/contraseña debe estar habilitado para usar el inicio de sesión con enlace de correo electrónico.
En la misma sección, habilite el método de inicio de sesión con enlace de correo electrónico (inicio de sesión sin contraseña) y haga clic en Guardar .
Puede habilitar el inicio de sesión con vínculo de correo electrónico inicializando una instancia de
FUIEmailAuth
conFIREmailLinkAuthSignInMethod
. También deberá proporcionar un objetoFIRActionCodeSettings
válido conhandleCodeInApp
establecido en verdadero.
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)
C objetivo
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];
Además, debe incluir en la lista blanca la URL que pasa al iniciador. Puede hacerlo en Firebase console , abra la sección Autenticación . En la pestaña Método de inicio de sesión , agregue la URL en Dominios autorizados .
Una vez que capte el enlace profundo, deberá pasarlo a la interfaz de usuario de autenticación para que pueda manejarse.
Rápido
FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)
C objetivo
[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
- El inicio de sesión con enlace de correo electrónico en FirebaseUI-iOS es compatible con FirebaseUI-Android y FirebaseUI-web, donde un usuario que inicia el flujo desde FirebaseUI-Android puede abrir el enlace y completar el inicio de sesión con FirebaseUI-web. Lo mismo es cierto para el flujo opuesto.
Manzana
Siga las secciones Antes de comenzar y Cumplir con los requisitos de datos anónimos de Apple en la guía Iniciar sesión con Apple de Firebase.
Agregue la función Iniciar sesión con Apple a su archivo de derechos.
Inicialice una instancia de proveedor de OAuth configurada para Iniciar sesión con Apple:
Rápido
provider = FUIOAuth.appleAuthProvider()
C objetivo
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
En Firebase console , abra la sección Autenticación y habilite el inicio de sesión de Google.
Agregue su ID de cliente invertida como un esquema de URL en su proyecto Xcode. Puede encontrar este valor en el archivo
GoogleService-Info.plist
.
Configure el SDK de inicio de sesión de Facebook siguiendo la página de inicio de Facebook .
En la consola Firebase , abra la sección Autenticación y habilite Facebook. Para habilitar el inicio de sesión de Facebook, debe proporcionar su ID de aplicación de Facebook y el secreto de la aplicación, que puede obtener en la consola de desarrolladores de Facebook.
Habilite el uso compartido de llaveros en su proyecto Xcode desde la pantalla Configuración del proyecto > Capacidades .
Agregue
fb FACEBOOK_APP_ID
como un esquema de URL en su proyecto Xcode.Agrega tu ID de la aplicación de Facebook y el nombre para mostrar al archivo
Info.plist
:Llave Valor FacebookAppID FACEBOOK_APP_ID
(por ejemplo,1234567890
)FacebookDisplayName El nombre de tu aplicación Inicialice una instancia de proveedor de Facebook:
Rápido
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
C objetivo
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
Si desea utilizar el inicio de sesión limitado de Facebook , establezca la propiedad
useLimitedLogin
en la instancia deFUIFacebookAuth
.Rápido
provider.useLimitedLogin = true
C objetivo
provider.useLimitedLogin = YES;
Gorjeo
En Firebase console , abra la sección Autenticación y habilite Twitter. Para habilitar el inicio de sesión de Twitter, debe proporcionar su clave y secreto de consumidor API de Twitter, que puede obtener en la consola de administración de aplicaciones de Twitter.
Inicialice una instancia de proveedor de OAuth configurada para iniciar sesión en Twitter:
Rápido
provider = FUIOAuth.twitterAuthProvider()
C objetivo
FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
Número de teléfono
En Firebase console , abra la sección Autenticación y habilite el inicio de sesión con número de teléfono.
Firebase debe poder verificar que las solicitudes de inicio de sesión del número de teléfono provienen de su aplicación. Una de las formas en que esto se logra es a través de notificaciones de APN. Consulte Habilitar la verificación de la aplicación para obtener más detalles.
Para habilitar las notificaciones de APN para su uso con Firebase Authentication:
En Xcode, habilite las notificaciones push para su proyecto.
Cargue su clave de autenticación de APN en Firebase. Si aún no tiene una clave de autenticación de APN, asegúrese de crear una en el Centro de miembros para desarrolladores de Apple .
Dentro de su proyecto en la consola Firebase, seleccione el ícono de ajustes, seleccione Configuración del proyecto y luego seleccione la pestaña Cloud Messaging .
En la clave de autenticación de APN en la configuración de la aplicación iOS , haga clic en el botón Cargar .
Vaya a la ubicación donde guardó su clave, selecciónela y haga clic en Abrir . Agregue el ID de clave para la clave (disponible en el Centro de miembros para desarrolladores de Apple ) y haga clic en Cargar .
Si ya tiene un certificado APNs, puede cargar el certificado en su lugar.
Cuando no se pueden recibir notificaciones de APN en un dispositivo, Firebase usa reCAPTCHA para verificar las solicitudes.
Para habilitar la verificación de reCAPTCHA, si aún no ha agregado su ID de cliente invertida como un esquema de URL (por ejemplo, para habilitar el inicio de sesión de Google), hágalo en su proyecto de Xcode. Puede encontrar este valor en el archivo
GoogleService-Info.plist
.Opcional : Firebase usa el método swizzling para obtener automáticamente el token de APN de su aplicación, para manejar las notificaciones automáticas silenciosas que Firebase envía a su aplicación y para interceptar automáticamente el redireccionamiento de esquema personalizado desde la página de verificación de reCAPTCHA durante la verificación.
Si prefiere no usar swizzling, consulte el Apéndice: Uso del inicio de sesión del teléfono sin swizzling en los documentos de autenticación del SDK de Firebase.
Registrarse
Para iniciar el flujo de inicio de sesión de FirebaseUI, primero inicialice FirebaseUI:
Rápido
import FirebaseAuthUI
/* ... */
FirebaseApp.configure()
let authUI = FUIAuth.defaultAuthUI()
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self
C objetivo
@import FirebaseAuthUI;
...
[FIRApp configure];
FUIAuth *authUI = [FUIAuth defaultAuthUI];
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self;
Luego, configure FirebaseUI para usar los métodos de inicio de sesión que desea admitir:
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
C objetivo
@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;
Si habilitó el inicio de sesión de Google o Facebook, implemente un controlador para el resultado de los flujos de registro de Google y 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
}
C objetivo
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary *)options {
NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
}
Finalmente, obtenga una instancia de AuthViewController
de FUIAuth
. Luego puede presentarlo como el primer controlador de vista de su aplicación o presentarlo desde otro controlador de vista en su aplicación.
Rápido
Para obtener el selector de método de inicio de sesión:
let authViewController = authUI.authViewController()
Si solo usa el inicio de sesión con número de teléfono, puede mostrar la vista de inicio de sesión con número de teléfono directamente en su lugar:
let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)
C objetivo
Para obtener el selector de método de inicio de sesión:
UINavigationController *authViewController = [authUI authViewController];
Si solo usa el inicio de sesión con número de teléfono, puede mostrar la vista de inicio de sesión con número de teléfono directamente en su lugar:
FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];
Después de presentar la vista de autenticación y que el usuario inicie sesión, el resultado se devuelve al delegado de autenticación de FirebaseUI en el didSignInWithUser:error:
::
Rápido
func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) {
// handle user and error as necessary
}
C objetivo
- (void)authUI:(FUIAuth *)authUI
didSignInWithUser:(nullable FIRUser *)user
error:(nullable NSError *)error {
// Implement this method to handle signed in user or error if any.
}
Desconectar
FirebaseUI proporciona métodos prácticos para cerrar sesión en Firebase Authentication, así como en todos los proveedores de identidad social:
Rápido
authUI.signOut()
C objetivo
[authUI signOut];
personalización
Puedes personalizar las pantallas de inicio de sesión subclasificando los controladores de vista de FirebaseUI y especificándolos en los 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)
}
C objetivo
- (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];
}
Puede personalizar la URL de los términos de servicio de su aplicación, que está vinculada en la pantalla de creación de la cuenta:
Rápido
let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService
C objetivo
authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"];
Finalmente, puede personalizar los mensajes y avisos que se muestran a sus usuarios especificando un paquete personalizado:
Rápido
authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.
C objetivo
authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.
Próximos pasos
- Para obtener más información sobre el uso y la personalización de FirebaseUI, consulte el archivo LÉAME en GitHub.
- Si encuentra un problema en FirebaseUI y desea informarlo, use el rastreador de problemas de GitHub .
FirebaseUI es una biblioteca construida sobre el SDK de autenticación de Firebase que proporciona flujos de IU directos para usar en su aplicación. FirebaseUI proporciona los siguientes beneficios:
- Múltiples proveedores : flujos de inicio de sesión para correo electrónico/contraseña, enlace de correo electrónico, autenticación telefónica, inicio de sesión de Google, inicio de sesión de Facebook e inicio de sesión de Twitter.
- Gestión de cuentas : flujos para gestionar tareas de gestión de cuentas, como la creación de cuentas y el restablecimiento de contraseñas.
- Vinculación de cuentas anónimas : flujos para vincular automáticamente cuentas anónimas a proveedores de identidad.
- Personalizable : personalice el aspecto de FirebaseUI para que coincida con su aplicación. Además, debido a que FirebaseUI es de código abierto, puede bifurcar el proyecto y personalizarlo exactamente según sus necesidades.
Antes de que empieces
Agregue FirebaseUI a su Podfile:
pod 'FirebaseUI'
Si lo prefiere, puede agregar solo el componente Auth y los proveedores que desea utilizar:
pod 'FirebaseUI/Auth' pod 'FirebaseUI/Google' pod 'FirebaseUI/Facebook' pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc pod 'FirebaseUI/Phone'
Si aún no ha conectado su aplicación a su proyecto de Firebase, hágalo desde la consola de Firebase .
Configurar métodos de inicio de sesión
Antes de que pueda usar Firebase para iniciar sesión en los usuarios, debe habilitar y configurar los métodos de inicio de sesión que desea admitir.
Dirección de correo electrónico y contraseña
En Firebase console , abra la sección Autenticación y habilite la autenticación por correo electrónico y contraseña.
Autenticación de enlace de correo electrónico
En Firebase console , abra la sección Autenticación . En la pestaña Método de inicio de sesión , habilite el proveedor de correo electrónico/contraseña . Tenga en cuenta que el inicio de sesión con correo electrónico/contraseña debe estar habilitado para usar el inicio de sesión con enlace de correo electrónico.
En la misma sección, habilite el método de inicio de sesión con enlace de correo electrónico (inicio de sesión sin contraseña) y haga clic en Guardar .
Puede habilitar el inicio de sesión con vínculo de correo electrónico inicializando una instancia de
FUIEmailAuth
conFIREmailLinkAuthSignInMethod
. También deberá proporcionar un objetoFIRActionCodeSettings
válido conhandleCodeInApp
establecido en verdadero.
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)
C objetivo
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];
Además, debe incluir en la lista blanca la URL que pasa al iniciador. Puede hacerlo en Firebase console , abra la sección Autenticación . En la pestaña Método de inicio de sesión , agregue la URL en Dominios autorizados .
Una vez que capte el enlace profundo, deberá pasarlo a la interfaz de usuario de autenticación para que pueda manejarse.
Rápido
FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)
C objetivo
[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
- El inicio de sesión con enlace de correo electrónico en FirebaseUI-iOS es compatible con FirebaseUI-Android y FirebaseUI-web, donde un usuario que inicia el flujo desde FirebaseUI-Android puede abrir el enlace y completar el inicio de sesión con FirebaseUI-web. Lo mismo es cierto para el flujo opuesto.
Manzana
Siga las secciones Antes de comenzar y Cumplir con los requisitos de datos anónimos de Apple en la guía Iniciar sesión con Apple de Firebase.
Agregue la función Iniciar sesión con Apple a su archivo de derechos.
Inicialice una instancia de proveedor de OAuth configurada para Iniciar sesión con Apple:
Rápido
provider = FUIOAuth.appleAuthProvider()
C objetivo
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
En Firebase console , abra la sección Autenticación y habilite el inicio de sesión de Google.
Agregue su ID de cliente invertida como un esquema de URL en su proyecto Xcode. Puede encontrar este valor en el archivo
GoogleService-Info.plist
.
Configure el SDK de inicio de sesión de Facebook siguiendo la página de inicio de Facebook .
En la consola Firebase , abra la sección Autenticación y habilite Facebook. Para habilitar el inicio de sesión de Facebook, debe proporcionar su ID de aplicación de Facebook y el secreto de la aplicación, que puede obtener en la consola de desarrolladores de Facebook.
Habilite el uso compartido de llaveros en su proyecto Xcode desde la pantalla Configuración del proyecto > Capacidades .
Agregue
fb FACEBOOK_APP_ID
como un esquema de URL en su proyecto Xcode.Agrega tu ID de la aplicación de Facebook y el nombre para mostrar al archivo
Info.plist
:Llave Valor FacebookAppID FACEBOOK_APP_ID
(por ejemplo,1234567890
)FacebookDisplayName El nombre de tu aplicación Inicialice una instancia de proveedor de Facebook:
Rápido
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
C objetivo
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
Si desea utilizar el inicio de sesión limitado de Facebook , establezca la propiedad
useLimitedLogin
en la instancia deFUIFacebookAuth
.Rápido
provider.useLimitedLogin = true
C objetivo
provider.useLimitedLogin = YES;
Gorjeo
En Firebase console , abra la sección Autenticación y habilite Twitter. Para habilitar el inicio de sesión de Twitter, debe proporcionar su clave y secreto de consumidor API de Twitter, que puede obtener en la consola de administración de aplicaciones de Twitter.
Inicialice una instancia de proveedor de OAuth configurada para iniciar sesión en Twitter:
Rápido
provider = FUIOAuth.twitterAuthProvider()
C objetivo
FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
Número de teléfono
En Firebase console , abra la sección Autenticación y habilite el inicio de sesión con número de teléfono.
Firebase debe poder verificar que las solicitudes de inicio de sesión del número de teléfono provienen de su aplicación. Una de las formas en que esto se logra es a través de notificaciones de APN. Consulte Habilitar la verificación de la aplicación para obtener más información.
Para habilitar las notificaciones de APN para su uso con Firebase Authentication:
En Xcode, habilite las notificaciones push para su proyecto.
Cargue su clave de autenticación de APN en Firebase. Si aún no tiene una clave de autenticación de APN, asegúrese de crear una en el Centro de miembros para desarrolladores de Apple .
Dentro de su proyecto en la consola Firebase, seleccione el ícono de ajustes, seleccione Configuración del proyecto y luego seleccione la pestaña Cloud Messaging .
En la clave de autenticación de APN en la configuración de la aplicación iOS , haga clic en el botón Cargar .
Vaya a la ubicación donde guardó su clave, selecciónela y haga clic en Abrir . Agregue el ID de clave para la clave (disponible en el Centro de miembros para desarrolladores de Apple ) y haga clic en Cargar .
Si ya tiene un certificado APNs, puede cargar el certificado en su lugar.
Cuando no se pueden recibir notificaciones de APN en un dispositivo, Firebase usa reCAPTCHA para verificar las solicitudes.
Para habilitar la verificación de reCAPTCHA, si aún no ha agregado su ID de cliente invertida como un esquema de URL (por ejemplo, para habilitar el inicio de sesión de Google), hágalo en su proyecto de Xcode. Puede encontrar este valor en el archivo
GoogleService-Info.plist
.Opcional : Firebase usa el método swizzling para obtener automáticamente el token de APN de su aplicación, para manejar las notificaciones automáticas silenciosas que Firebase envía a su aplicación y para interceptar automáticamente el redireccionamiento de esquema personalizado desde la página de verificación de reCAPTCHA durante la verificación.
Si prefiere no usar swizzling, consulte el Apéndice: Uso del inicio de sesión del teléfono sin swizzling en los documentos de autenticación del SDK de Firebase.
Registrarse
Para iniciar el flujo de inicio de sesión de FirebaseUI, primero inicialice FirebaseUI:
Rápido
import FirebaseAuthUI
/* ... */
FirebaseApp.configure()
let authUI = FUIAuth.defaultAuthUI()
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self
C objetivo
@import FirebaseAuthUI;
...
[FIRApp configure];
FUIAuth *authUI = [FUIAuth defaultAuthUI];
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self;
Luego, configure FirebaseUI para usar los métodos de inicio de sesión que desea admitir:
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
C objetivo
@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;
Si habilitó el inicio de sesión de Google o Facebook, implemente un controlador para el resultado de los flujos de registro de Google y 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
}
C objetivo
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary *)options {
NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
}
Finalmente, obtenga una instancia de AuthViewController
de FUIAuth
. Luego puede presentarlo como el primer controlador de vista de su aplicación o presentarlo desde otro controlador de vista en su aplicación.
Rápido
Para obtener el selector de método de inicio de sesión:
let authViewController = authUI.authViewController()
Si solo usa el inicio de sesión con número de teléfono, puede mostrar la vista de inicio de sesión con número de teléfono directamente en su lugar:
let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)
C objetivo
Para obtener el selector de método de inicio de sesión:
UINavigationController *authViewController = [authUI authViewController];
Si solo usa el inicio de sesión con número de teléfono, puede mostrar la vista de inicio de sesión con número de teléfono directamente en su lugar:
FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];
Después de presentar la vista de autenticación y que el usuario inicie sesión, el resultado se devuelve al delegado de autenticación de FirebaseUI en el didSignInWithUser:error:
::
Rápido
func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) {
// handle user and error as necessary
}
C objetivo
- (void)authUI:(FUIAuth *)authUI
didSignInWithUser:(nullable FIRUser *)user
error:(nullable NSError *)error {
// Implement this method to handle signed in user or error if any.
}
Desconectar
FirebaseUI proporciona métodos prácticos para cerrar sesión en Firebase Authentication, así como en todos los proveedores de identidad social:
Rápido
authUI.signOut()
C objetivo
[authUI signOut];
personalización
Puedes personalizar las pantallas de inicio de sesión subclasificando los controladores de vista de FirebaseUI y especificándolos en los 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)
}
C objetivo
- (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];
}
Puede personalizar la URL de los términos de servicio de su aplicación, que está vinculada en la pantalla de creación de la cuenta:
Rápido
let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService
C objetivo
authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"];
Finalmente, puede personalizar los mensajes y avisos que se muestran a sus usuarios especificando un paquete personalizado:
Rápido
authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.
C objetivo
authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.
Próximos pasos
- Para obtener más información sobre el uso y la personalización de FirebaseUI, consulte el archivo LÉAME en GitHub.
- Si encuentra un problema en FirebaseUI y desea informarlo, use el rastreador de problemas de GitHub .