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: