Autenticar com o GitHub no Android

Você pode permitir que os usuários se autentiquem no Firebase usando contas do GitHub. Basta integrar a autenticação do GitHub ao seu 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 Firebase console.
  3. Adicione a dependência do Firebase Authentication ao arquivo build.gradle do aplicativo:
    implementation 'com.google.firebase:firebase-auth:16.0.3'
  4. Registre o app como um aplicativo de desenvolvedor no GitHub e receba o ID do cliente e a Chave secreta do cliente do OAuth 2.0 do app.
  5. Ative a autenticação do GitHub:
    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 GitHub e inclua o ID do cliente do OAuth 2.0 e a chave secreta do cliente que você recebeu do GitHub.
    3. Em seguida, defina o URI de redirecionamento do OAuth do Firebase, por exemplo, my-app-12345.firebaseapp.com/__/auth/handler como o URL de callback de autorização na página de configurações do app no GitHub.

Autenticar com o Firebase

  1. Integre a autenticação do GitHub ao seu aplicativo ao seguir as instruções na documentação do desenvolvedor. Use o fluxo de aplicativo da Web e configure um filtro de intent no seu aplicativo para processar o retorno de chamada do OAuth 2.0 do GitHub. No final do fluxo de login do GitHub, você receberá um token de acesso do OAuth 2.0.
  2. No método onCreate da atividade de login, acesse a instância compartilhada do objeto FirebaseAuth:
    private FirebaseAuth mAuth;
    // ...
    mAuth = FirebaseAuth.getInstance();
    
  3. Ao inicializar sua atividade, verifique se o usuário está conectado no momento:
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
    
  4. Depois que um usuário se conectar com o GitHub, troque o token de acesso do OAuth 2.0 por uma credencial do Firebase e faça a autenticação com essa credencial:
    String token = "<GITHUB-ACCESS-TOKEN>";
    AuthCredential credential = GithubAuthProvider.getCredential(token);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
    
                    // If sign in fails, display a message to the user. If sign in succeeds
                    // the auth state listener will be notified and logic to handle the
                    // signed in user can be handled in the listener.
                    if (!task.isSuccessful()) {
                        Log.w(TAG, "signInWithCredential", task.getException());
                        Toast.makeText(MainActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                    }
    
                    // ...
                }
            });
    
    Se a chamada para signInWithCredential for bem-sucedida, você poderá usar o método getCurrentUser para coletar os dados da conta do usuário.

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:

FirebaseAuth.getInstance().signOut();

Enviar comentários sobre…

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