Autentica mediante el Acceso con Twitter en iOS

Para permitir que los usuarios se autentiquen con Firebase mediante sus cuentas de Twitter, integra la autenticación de Twitter a la app.

Los usuarios autenticados pueden acceder a datos restringidos para los usuarios en Firebase Realtime Database y Cloud Storage.

Antes de comenzar

  1. Agrega Firebase al proyecto de iOS. Incluye los siguientes pods en tu Podfile:
    pod 'Firebase/Auth'
    
  2. Registra tu app como una aplicación de desarrollador en Twitter y obtén su Clave de API y el Secreto de API.
  3. Habilita el acceso a través de Twitter:
    1. En Firebase console, abre la sección Auth.
    2. En la pestaña Método de acceso, habilita el método de acceso Twitter y especifica la clave de API y el secreto de API que obtuviste de Twitter.
    3. Después, asegúrate de que el URI de redireccionamiento de OAuth de Firebase (p. ej., my-app-12345.firebaseapp.com/__/auth/handler) esté configurado como URL de devolución de llamada en la página de configuración de tu app que se encuentra en la configuración de la app de Twitter.

Autentica con Firebase

  1. Para integrar el servicio de acceso con Twitter a tu app, sigue la documentación para programadores.

    En el método de devolución de llamada de buttonWithLogInCompletion o logInWithCompletion, obtén el token de autenticación de Twitter para la sesión de acceso y el secreto del token de autenticación de Twitter. Por ejemplo:

    Swift

    let logInButton = TWTRLogInButton(logInCompletion: { session, error in
      if (session != nil) {
        let authToken = session.authToken
        let authTokenSecret = session.authTokenSecret
        // ...
      } else {
          // ...
      }
    })
    

    Objective-C

     TWTRLogInButton *logInButton =
         [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession* session,
                                                      NSError* error) {
      if (session) {
        NSString *authToken = session.authToken;
        NSString *authTokenSecret = session.authTokenSecret;
        // ...
      } else {
        // ...
      }
    }];
    
  2. Importa el módulo de Firebase en tu UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  3. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de tu aplicación:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  4. Una vez que un usuario accede correctamente, en tu implementación de didCompleteWithResult:error:, intercambia el token de autenticación de Twitter y el secreto del token de autenticación de Twitter por una credencial de Firebase:

    Swift

    let credential = TwitterAuthProvider.credential(withToken: session.authToken, secret: session.authTokenSecret)
    

    Objective-C

    FIRAuthCredential *credential =
        [FIRTwitterAuthProvider credentialWithToken:session.authToken
                                             secret:session.authTokenSecret];
    
  5. Por último, autentica con Firebase mediante la credencial de Firebase:

    Swift

    Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
      if let error = error {
        // ...
        return
      }
      // User is signed in
      // ...
    }
    

    Objective-C

    [[FIRAuth auth] signInAndRetrieveDataWithCredential:credential
                                             completion:^(FIRAuthDataResult * _Nullable authResult,
                                                          NSError * _Nullable error) {
      if (error) {
        // ...
        return;
      }
      // User successfully signed in. Get user data from the FIRUser object
      if (authResult == nil) { return; }
      FIRUser *user = authResult.user;
      // ...
    }];
    
  6. Opcional: Agrega una dirección de correo electrónico al perfil del usuario. Cuando los usuarios acceden a tu app con Twitter, Firebase no puede acceder a sus direcciones de correo electrónico. Si deseas agregar sus direcciones de correo electrónico a los perfiles de los usuarios que acceden con Twitter, pídeles que ingresen sus direcciones de correo electrónico y luego llama a updateEmail, como en el siguiente ejemplo:

    Swift

    Auth.auth().currentUser?.updateEmail(to: email) { (error) in
      // ...
    }
    

    Objective-C

    [[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) {
      // ...
    }];
    

Pasos siguientes

Cuando un usuario accede por primera vez, se crea una cuenta de usuario nueva y se la vincula con las credenciales (el nombre de usuario y la contraseña, el número de teléfono o la información del proveedor de autenticación) con las que accedió el usuario. Esta cuenta nueva se almacena como parte del proyecto de Firebase y puede usarse para identificar a un usuario en todas las apps del proyecto, sin importar el método de acceso que se use.

  • En las apps, puedes obtener la información básica de perfil del usuario a partir del objeto FIRUser. Consulta Cómo administrar usuarios.

  • En las reglas de seguridad de Firebase Realtime Database y Cloud Storage, puedes obtener el ID único del usuario que accedió a partir de la variable auth, y usarlo para controlar los datos a los que tiene acceso.

Para permitir que los usuarios accedan a tu app con varios proveedores de autenticación, puedes vincular las credenciales de proveedores de autenticación con una cuenta de usuario existente.

Para salir de la sesión de un usuario, llama a signOut:.

Swift

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print ("Error signing out: %@", signOutError)
}
  

Objective-C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

Tal vez sea conveniente que agregues código de administración de errores para todos los errores de autenticación. Consulta Maneja errores.

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.