Em 5 de outubro de 2021, o Login do Facebook não oferecerá mais suporte a navegadores incorporados do Android (WebViews) para autenticação de usuários.

Para obter informações sobre essa descontinuação, consulte a publicação de blog Descontinuando o suporte à autenticação do Login do Facebook em navegadores incorporados do Android.

Para obter informações sobre a descontinuação de Webviews e o uso de abas personalizadas, consulte Descontinuando Android WebViews.

Login do Facebook para Android – Início rápido

O SDK do Facebook para Android permite que as pessoas entrem no app usando o Login do Facebook. Ao entrar no seu app com o Facebook, as pessoas podem conceder permissões ao app para que você possa recuperar informações ou executar ações no Facebook em nome delas.

Para obter um exemplo de projeto que mostra como integrar o Login do Facebook a um app Android, consulte FBLoginSample no GitHub.

Siga os procedimentos abaixo para adicionar o Login do Facebook ao app.

1. Fazer o login

Entre no Facebook para criar aplicativos ou se registrar como um desenvolvedor.

2. Baixe o app do Facebook

Clique no botão a seguir para baixar o aplicativo do Facebook.

3. Integre o SDK do Facebook

O SDK do Login do Facebook para Android é um componente do SDK do Facebook para Android. Para usar o SDK do Login do Facebook no seu projeto, baixe o recurso ou faça com que ele seja uma dependência no Maven. Para oferecer suporte às alterações no Android 11, use o SDK 8.1 ou uma versão posterior.

Como usar o Maven

  1. No seu projeto, abra your_app > Gradle Scripts > build.gradle (Project) para garantir que o seguinte repositório esteja listado no buildscript { repositories {}}:
    mavenCentral() 
    
  2. No seu projeto, abra your_app > Gradle Scripts > build.gradle (Module: app) e adicione a declaração de implementação a seguir à seção dependencies{} para usar a versão mais recente do SDK do Login do Facebook:
     implementation 'com.facebook.android:facebook-login:latest.release'
    
  3. Crie o projeto.

4. Edite seus recursos e manifesto

Se estiver usando a versão 5.15 ou posterior do SDK do Facebook para Android, você não precisa adicionar uma atividade ou filtro de intenção para as guias personalizadas do Chrome. Essa funcionalidade está inclusa no SDK.

Depois que você integrar o Login do Facebook, alguns eventos do app serão automaticamente registrados e coletados para o Gerenciador de Eventos, a menos que você desabilite o registro automático. Para saber mais sobre as informações coletadas e sobre como desabilitar o registro automático de eventos, consulte Registro automático de eventos do app.

Crie strings para o ID do app do Facebook e para os que são essenciais para habilitar as abas personalizadas do Chrome. Além disso, adicione FacebookActivity ao manifesto do Android.
  1. Abra o arquivo /app/res/values/strings.xml.
  2. Adicione elementos string com os nomes facebook_app_id, fb_login_protocol_scheme e facebook_client_token, depois defina os valores do ID do app e do token do cliente. Por exemplo, se o ID do app for 1234 e o token do cliente for 56789, seu código terá esta aparência:
    <string name="facebook_app_id">1234</string>
    <string name="fb_login_protocol_scheme">fb1234</string>
    <string name="facebook_client_token">56789</string>
    
    
  3. Abra o arquivo /app/manifest/AndroidManifest.xml.
  4. Adicione elementos meta-data ao elemento application para o ID do app e o token do cliente:
    <application android:label="@string/app_name" ...>
        ...
       	<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
       	<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
    
  5. Inclua uma atividade para o Facebook, assim como uma atividade e um filtro de intenção para as abas personalizadas do Chrome no seu elemento application:
        <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                    "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name" />
        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
        </activity>
    
  6. Adicione um elemento uses-permission ao manifesto depois do elemento application:
    <uses-permission android:name="android.permission.INTERNET"/>
    
    
  7. (Opcional) Para recusar a permissão da identificação do anunciante, adicione um elemento uses-permission ao manifesto depois do elemento application:
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
            
  8. É possível definir o registro automático de eventos do app como "true" ou "false" configurando a sinalização AutoLogAppEventsEnabled no arquivo AndroidManifest.xml.

  9. Crie o projeto.

5. Associe o nome do seu pacote e a classe padrão com seu app

Você precisa fazer o login para concluir esta etapa.

6. Forneça o desenvolvimento e os hashes de chave de lançamento do seu app

Você precisa fazer o login para concluir esta etapa.

7. Habilite o login único no seu app

Você precisa fazer o login para concluir esta etapa.

8. Adicione o botão login do Facebook

A maneira mais simples de adicionar o Login no Facebook ao seu app é adicionar o LoginButton do SDK. O LoginButton é um elemento de interface do usuário que contém as funcionalidades disponíveis no LoginManager. Se alguém clicar no botão, o login será iniciado com as permissões definidas no LoginManager. Para ser usado por usuários externos, o Login do Facebook exige a permissão avançada public_profile. O botão segue o estado de login e exibe o texto correto com base no estado de autenticação de quem faz o login.
Para adicionar o botão Login do Facebook, primeiro adicione-o ao arquivo XML do layout:
<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" /> 

9. Registre um retorno de chamada

Agora, crie um callbackManager para gerenciar as respostas de login chamando CallbackManager.Factory.create.
callbackManager = CallbackManager.Factory.create();
Se você estiver adicionando o botão a um fragmento, também será preciso atualizar a sua atividade para usar o fragmento. É possível personalizar as propriedades do Login button e registrar um retorno de chamada no método onCreate() ou onCreateView(). As propriedades para personalização são LoginBehavior, DefaultAudience, ToolTipPopup.Style e as permissões no LoginButton. Por exemplo:
      
    private static final String EMAIL = "email";
      
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList(EMAIL));
    // If you are using in a fragment, call loginButton.setFragment(this);    

    // Callback registration
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
Para responder a um resultado de login, você deverá registrar um retorno de chamada com LoginManager ou LoginButton. Caso você registre o retorno de chamada com LoginButton, não será preciso registrá-lo no gerenciador de login.
Adicione o retorno de chamada LoginManager ao método onCreate() da atividade ou do fragmento:
    callbackManager = CallbackManager.Factory.create();      
      
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code
                }

                @Override
                public void onCancel() {
                     // App code
                }

                @Override
                public void onError(FacebookException exception) {
                     // App code   
                }
    });
Se o login for concluído com sucesso, o parâmetro LoginResult conterá o novo AccessToken e as permissões concedidas ou recusadas recentemente.
Não é preciso ter um registerCallback para que o login seja bem-sucedido. Você pode seguir as alterações do token de acesso atual com a classe AccessTokenTracker descrita abaixo.
Por fim, no método onActivityResult, chame callbackManager.onActivityResult para passar os resultados de login ao LoginManager via callbackManager.

Se você estiver usando atividades ou fragmentos do AndroidX, não será necessário substituir onActivityResult.

      @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
Cada atividade ou fragmento integrado com o login ou o compartilhamento do FacebookSDK deve encaminhar onActivityResult ao callbackManager.

10. Verifique o status de login

O aplicativo pode ter apenas uma pessoa conectada de cada vez, e o LoginManager define o AccessToken e o Profile atuais dessa pessoa. O SDK do Facebook salva os dados nas preferências compartilhadas e os define no início da sessão. Você pode ver se uma pessoa já está conectada consultando AccessToken.getCurrentAccessToken() e Profile.getCurrentProfile().
Você pode carregar AccessToken.getCurrentAccessToken com o SDK do cache ou de um favorito do aplicativo quando ele inicializar a frio. Verifique a validade no método onCreate da sua Activity:
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
  
Você poderá fazer o login real posteriormente, como no OnClickListener de um botão personalizado:
      
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

11. Habilite o login expresso

Com o Login Expresso, as pessoas podem entrar nas respectivas contas do Facebook em diferentes dispositivos e plataformas. Se um usuário acessar seu aplicativo usando um dispositivo Android e depois mudar de dispositivo, o recurso Login Expresso o conectará à respectiva conta do Facebook, em vez de solicitar a seleção de um método de entrada. Isso evita a criação de contas duplicadas e falhas no login. Para oferecer suporte às alterações no Android 11, primeiro adicione o seguinte código para o elemento queries no seu arquivo /app/manifest/AndroidManifest.xml.
  
<queries> <package android:name="com.facebook.katana" /> </queries>   
O código a seguir mostra como ativar o Login Expresso.
LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });   

Próximas etapas

Parabéns, você adicionou o login no Facebook no seu app do Android! Não deixe de consultar as outras páginas da nossa documentação para ver guias mais avançados.
Implemente um retorno de chamada de exclusão de dados para responder a solicitações de pessoas que desejam excluir os próprios dados do Facebook.
Rastreie o token de acesso e o perfil dos seus usuários.
Gerencie os dados a que seu app terá acesso por meio do Login do Facebook.
Está enfrentando problemas na interação com o Login do Facebook? Consulte a lista de problemas comuns e como solucioná-las.
Dependendo dos dados do Facebook que você solicitou das pessoas usando o Login do Facebook, talvez você precise enviar o app para análise antes do lançamento.
Para criar o seu próprio fluxo de login, consulte Criar manualmente um fluxo de login.