Account Kit is being deprecated:

  • On September 9, 2019, no new apps will be able to integrate Account Kit, but existing integrations will continue to function.
  • On December 9, 2019, the daily SMS limit will be reduced to 1,000 messages per app ID per day. All other channels (including WhatsApp) will continue to function without restrictions.
  • On March 9, 2020, Account Kit will be deprecated and will no longer function.

You will be able to retrieve your app's user data for 90 after deprecation, through June 9, 2020. See Retrieving Your User Data.

For more information, see Account Kit services no longer available starting in March.

Account Kit para Android – Início rápido

Consulte as Próximas etapas para conhecer as personalizações opcionais que você pode realizar.

Para obter um exemplo de projeto que ilustra como integrar o Account Kit, consulte Exemplos de Account Kit para Android no GitHub.

Para saber os problemas comuns encontrados durante a integração, consulte a seção Perguntas frequentes.

1. Fazer o login

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

2. Escolha as configurações do aplicativo

Escolha se será permitido o login por SMS e email, e escolha as configurações de segurança para seu aplicativo. Para saber mais sobre como escolher as configurações do token de acesso, confira Tokens de acesso. Para saber mais sobre como escolher a configuração da chave secreta do aplicativo, confira Como usar a Graph API.

3. Importar o SDK do Account Kit

Adicione a dependência de implementação com a versão mais recente do SDK do Account Kit no arquivo build.gradle de seu aplicativo:
repositories { jcenter() } dependencies { implementation 'com.facebook.android:account-kit-sdk:5.+' }

4. Adicione XML Strings e Edit the Manifest.

Você precisa fazer o login para concluir esta etapa.

5. Adicione seu desenvolvimento e os hashes de chave de lançamento

Você precisa fazer o login para concluir esta etapa.

6. Verificar sessões existentes

Se o seu aplicativo for receber diretamente o token de acesso do usuário (ou seja., a opção Habilitar o fluxo de token de acesso do cliente no painel de seu aplicativo estiver ATIVADA), verifique um token válido existente:
import com.facebook.accountkit.AccountKit;
import com.facebook.accountkit.AccessToken;

AccessToken accessToken = AccountKit.getCurrentAccessToken();

if (accessToken != null) {
  //Handle Returning User
} else {
  //Handle new or logged out user
Se o seu aplicativo for receber um código de autorização que será transferido ao servidor (ou seja, se a opção Habilitar o fluxo de token de acesso do cliente no painel de seu aplicativo estiver DESATIVADA), caberá a você fazer seu servidor comunicar o status de login correto ao seu aplicativo cliente.

7. Iniciar um fluxo de login para SMS

import com.facebook.accountkit.AccountKit;
import com.facebook.accountkit.ui.AccountKitActivity;
import com.facebook.accountkit.ui.AccountKitConfiguration;
import com.facebook.accountkit.ui.LoginType;

public static int APP_REQUEST_CODE = 99;

public void phoneLogin(final View view) {
  final Intent intent = new Intent(getActivity(), AccountKitActivity.class);
  AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
    new AccountKitConfiguration.AccountKitConfigurationBuilder(
      LoginType.PHONE,
      AccountKitActivity.ResponseType.CODE); // or .ResponseType.TOKEN
  // ... perform additional configuration ...
  intent.putExtra(
    AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
    configurationBuilder.build());
  startActivityForResult(intent, APP_REQUEST_CODE);
}
O APP_REQUEST_CODE é seu código personalizado para rastrear seu fluxo de login. Pode ser qualquer número inteiro, mas precisa ser definido por seu aplicativo. Ao inicializar seus extras pretendidos, especifique o AccountKitActivity.ResponseType que corresponda à configuração de autorização de seu aplicativo no painel do portal do desenvolvedor do Facebook: TOKEN, se a opção Habilitar o fluxo de token de acesso do cliente estiver ativada no painel do aplicativo, e CODE, se estiver desativada. Se as pessoas estão conectadas na conta do Facebook em dispositivos Android com número de telefone verificado, o Account Kit faz a verificação sem exigir o código enviado por SMS. Confira mais informações em Verificação instantânea.

8. Iniciar um fluxo de login para Email

import com.facebook.accountkit.AccountKit;
import com.facebook.accountkit.ui.AccountKitActivity;
import com.facebook.accountkit.ui.AccountKitConfiguration;
import com.facebook.accountkit.ui.LoginType;

public static int APP_REQUEST_CODE = 99;

public void emailLogin(final View view) {
  final Intent intent = new Intent(getActivity(), AccountKitActivity.class);
  AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
    new AccountKitConfiguration.AccountKitConfigurationBuilder(
      LoginType.EMAIL,
      AccountKitActivity.ResponseType.CODE); // or .ResponseType.TOKEN
  // ... perform additional configuration ...
  intent.putExtra(
    AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
    configurationBuilder.build());
  startActivityForResult(intent, APP_REQUEST_CODE);
}
Com o login de email do Account Kit, as pessoas recebem um email enviado a suas contas. Quando elas clicarem no link do email, no mesmo dispositivo em que o aplicativo está instalado, serão direcionadas para o aplicativo a fim de concluírem a atividade de login. Para direcionar as pessoas para o aplicativo, adicione a atividade AccountKitEmailRedirectActivity com o seguinte filtro de intenção ao seu arquivo AndroidManifest.xml:
 <activity android:name="com.facebook.accountkit.ui.AccountKitEmailRedirectActivity">
   <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/ak_login_protocol_scheme" />
  </intent-filter>
</activity>
E o seguinte em seu arquivo strings.xml.
// if your Facebook App ID is 1234567, you should use ak1234567
<string name="ak_login_protocol_scheme">akFACEBOOK_APP_ID</string>

9. Manipular o resultado da atividade

Capture o resultado da atividade do Account Kit e extraia o `AccountKitLoginResult` do argumento Intent para determinar o status da tentativa de login.
import com.facebook.accountkit.AccountKitLoginResult;

    @Override
    protected void onActivityResult(
            final int requestCode,
            final int resultCode,
            final Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == APP_REQUEST_CODE) { // confirm that this response matches your request
            AccountKitLoginResult loginResult = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
            String toastMessage;
            if (loginResult.getError() != null) {
                toastMessage = loginResult.getError().getErrorType().getMessage();
                showErrorActivity(loginResult.getError());
            } else if (loginResult.wasCancelled()) {
                toastMessage = "Login Cancelled";
            } else {
                if (loginResult.getAccessToken() != null) {
                    toastMessage = "Success:" + loginResult.getAccessToken().getAccountId();
                } else {
                    toastMessage = String.format(
                            "Success:%s...",
                            loginResult.getAuthorizationCode().substring(0,10));
                }

                // If you have an authorization code, retrieve it from
                // loginResult.getAuthorizationCode()
                // and pass it to your server and exchange it for an access token.

                // Success! Start your next activity...
                goToMyLoggedInActivity();
            }

            // Surface the result to your user in an appropriate way.
            Toast.makeText(
                    this,
                    toastMessage,
                    Toast.LENGTH_LONG)
                    .show();
        }
    }

10. Fornecer um botão de Saída

Se você começar a sessão de login com `AccountKitActivity.ResponseType.TOKEN`, uma opção de saída será disponibilizada a fim de remover o AccessToken armazenado do dispositivo.

import com.facebook.accountkit.AccountKit;

AccountKit.logOut();

11. Acessar informações da conta no dispositivo

Se você começar a sessão de login com AccountKitActivity.ResponseType.TOKEN, será possível acessar o ID do Account Kit, o número de telefone e o email da conta atual por meio de uma chamada para getCurrentAccount().
import com.facebook.accountkit.AccountKit;
import com.facebook.accountkit.Account;
import com.facebook.accountkit.PhoneNumber;
import com.facebook.accountkit.AccountKitCallback;
import com.facebook.accountkit.AccountKitError;

AccountKit.getCurrentAccount(new AccountKitCallback<Account>() {
  @Override
  public void onSuccess(final Account account) {
    // Get Account Kit ID
    String accountKitId = account.getId();

    // Get phone number
    PhoneNumber phoneNumber = account.getPhoneNumber();
    if (phoneNumber != null) {
      String phoneNumberString = phoneNumber.toString();
    }

    // Get email
    String email = account.getEmail();
  }
  
  @Override
  public void onError(final AccountKitError error) {
    // Handle Error
  }
});
    

12. Próximas etapas

Para personalizar o comportamento e a aparência do seu aplicativo, consulte os tópicos a seguir: