Autenticar com o login do Twitter no iOS

Os usuários podem fazer a autenticação no Firebase com a conta do Twitter. Basta integrar essa conta ao app.

Os usuários autenticados podem acessar dados restritos a usuários no Firebase Realtime Database e no Cloud Storage.

Antes de começar

  1. Adicione o Firebase ao projeto do iOS. Inclua os pods a seguir no Podfile:
    pod 'Firebase/Auth'
    
  2. Registre o app como aplicativo de desenvolvedor no Twitter e receba a chave de API e a chave secreta da API.
  3. Ative o login do Twitter:
    1. No Console do Firebase, abra a seção Autenticação.
    2. Na guia Método de login, ative o método de login do Twitter e especifique a chave de API e a chave secreta da API recebidas do Twitter.
    3. Em seguida, defina o URI de redirecionamento de OAuth do Firebase, por exemplo, my-app-12345.firebaseapp.com/__/auth/handler, como seu URL de retorno de chamada. Para isso, acesse a página de configurações do app, nas configurações do app do Twitter.

Autenticar no Firebase

  1. Integre o login do Twitter ao seu app seguindo as instruções da documentação do desenvolvedor.

    No método de retorno de chamada buttonWithLogInCompletion ou logInWithCompletion, receba o token de autenticação do Twitter e o segredo desse token na sessão de login. Por exemplo:

    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. Importe o módulo do Firebase no UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  3. Configure uma instância compartilhada do FirebaseApp, que normalmente está no método application:didFinishLaunchingWithOptions: do aplicativo:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  4. Depois que um usuário faz login, troque o token de autenticação do Twitter e a chave secreta dele por uma credencial do Firebase durante a implementação do didCompleteWithResult:error::

    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, use a credencial do Firebase para fazer a autenticação:

    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: adicione um endereço de e-mail ao perfil dos usuários. Quando eles fazem login no app com o Twitter, os endereços deles não podem ser acessados pelo Firebase. Se quiser adicionar os e-mails aos perfis dos usuários que fazem login com o Twitter, solicite essa informação e depois chame updateEmail como neste exemplo:

    Swift

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

    Objective-C

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

Próximas etapas

Depois que um usuário faz login pela primeira vez, uma nova conta é criada e vinculada às credenciais, que podem ser o número do telefone, o nome de usuário e a senha ou as informações do provedor de autenticação. Essa nova conta é armazenada como parte do projeto do Firebase. Ela pode ser usada para identificar um usuário em todos os apps do projeto, independentemente do método de login usado.

  • Nos apps, é possível acessar informações básicas de perfil do usuário a partir do objeto FIRUser. Consulte Gerenciar usuários.

  • Nas Regras de segurança do Firebase Realtime Database e do Cloud Storage, é possível usar a variável auth para encontrar o código exclusivo do usuário conectado. Use essa informação para controlar quais dados ele pode acessar.

Os usuários podem fazer login no app usando vários provedores de autenticação. Basta vincular as credenciais desses provedores a uma conta de usuário.

Para desconectar um usuário, chame 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;
}

Adicione também o código de gerenciamento dos possíveis erros de autenticação. Consulte Solucionar erros.

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.