Autenticar usando o Twitter no Android

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

Antes de começar

  1. Adicione o Firebase ao projeto do Android.
  2. Se você ainda não conectou o app ao projeto do Firebase, faça isso no Console do Firebase.
  3. Adicione a dependência do Firebase Authentication ao arquivo build.gradle do aplicativo:
    implementation 'com.google.firebase:firebase-auth:16.0.4'
  4. Registre o app como um aplicativo de desenvolvedor no Twitter e receba a chave de API e a chave secreta da API.
  5. 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 com o Firebase

  1. No método onCreate da atividade de login, acesse a instância compartilhada do objeto FirebaseAuth:

    Java
    Android

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin
    Android

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = FirebaseAuth.getInstance()
  2. Ao inicializar sua atividade, verifique se o usuário está conectado no momento:

    Java
    Android

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }

    Kotlin
    Android

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        updateUI(currentUser)
    }
  3. Integre o login do Twitter no seu app seguindo a documentação do desenvolvedor. No final do fluxo de login do Twitter, você receberá um token de acesso e um segredo OAuth. Você deve ter um código na sua atividade parecido com este:

    Java
    Android

    private TwitterLoginButton mLoginButton;
    
    // ...
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // ...
        mLoginButton = findViewById(R.id.buttonTwitterLogin);
        mLoginButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
                Log.d(TAG, "twitterLogin:success" + result);
                handleTwitterSession(result.data);
            }
    
            @Override
            public void failure(TwitterException exception) {
                Log.w(TAG, "twitterLogin:failure", exception);
                updateUI(null);
            }
        });
    }
    
    // ...
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        // Pass the activity result to the Twitter login button.
        mLoginButton.onActivityResult(requestCode, resultCode, data);
    }
    

    Kotlin
    Android

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        buttonTwitterLogin?.callback = object : Callback<TwitterSession>() {
            override fun success(result: Result<TwitterSession>) {
                Log.d(TAG, "twitterLogin:success$result")
                handleTwitterSession(result.data)
            }
    
            override fun failure(exception: TwitterException) {
                Log.w(TAG, "twitterLogin:failure", exception)
                updateUI(null)
            }
        }
    }
    
    // ...
    
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
    
        // Pass the activity result to the Twitter login button.
        loginButton!!.onActivityResult(requestCode, resultCode, data)
    }
          
  4. Depois que o usuário fizer login no Twitter, troque o token de acesso OAuth e o segredo OAuth para uma credencial do Firebase e autentique com a credencial do Firebase:

    Java
    Android

    private void handleTwitterSession(TwitterSession session) {
        Log.d(TAG, "handleTwitterSession:" + session);
    
        AuthCredential credential = TwitterAuthProvider.getCredential(
                session.getAuthToken().token,
                session.getAuthToken().secret);
    
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success, update UI with the signed-in user's information
                            Log.d(TAG, "signInWithCredential:success");
                            FirebaseUser user = mAuth.getCurrentUser();
                            updateUI(user);
                        } else {
                            // If sign in fails, display a message to the user.
                            Log.w(TAG, "signInWithCredential:failure", task.getException());
                            Toast.makeText(TwitterLoginActivity.this, "Authentication failed.",
                                    Toast.LENGTH_SHORT).show();
                            updateUI(null);
                        }
    
                        // ...
                    }
                });
    }

    Kotlin
    Android

    private fun handleTwitterSession(session: TwitterSession) {
        Log.d(TAG, "handleTwitterSession:$session")
    
        val credential = TwitterAuthProvider.getCredential(
                session.authToken.token,
                session.authToken.secret)
    
        auth.signInWithCredential(credential)
                .addOnCompleteListener(this) { task ->
                    if (task.isSuccessful) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success")
                        val user = auth.currentUser
                        updateUI(user)
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.exception)
                        Toast.makeText(baseContext, "Authentication failed.",
                                Toast.LENGTH_SHORT).show()
                        updateUI(null)
                    }
    
                    // ...
                }
    }
    Se a chamada para signInWithCredential for bem-sucedida, você pode usar o FirebaseUser retornado para prosseguir.

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 e pode ser usada para identificar um usuário em todos os apps do projeto, seja qual for o método de login utilizado.

  • Nos apps, é possível acessar informações básicas de perfil do usuário por meio do objeto FirebaseUser. 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:

Java
Android

FirebaseAuth.getInstance().signOut();

Kotlin
Android

FirebaseAuth.getInstance().signOut()

Enviar comentários sobre…

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