Estamos descontinuando a biblioteca da plataforma JavaScript de login do Google para web . A biblioteca ficará indisponível para download após a data de suspensão de uso de 31 de março de 2023. Em vez disso, use os novos Serviços de identidade do Google para Web .
Por padrão, os IDs de cliente recém-criados agora são impedidos de usar a Biblioteca de plataforma mais antiga, os IDs de cliente existentes não são afetados. Novos IDs de cliente criados antes de 29 de julho de 2022 podem definir `plugin_name` para permitir o uso da Biblioteca do Google Platform.

Integrando o Login do Google em seu aplicativo Android

Para integrar o Login do Google em seu aplicativo Android, configure o Login do Google e adicione um botão ao layout do seu aplicativo que inicia o fluxo de login.

Antes de você começar

Configure um projeto do Google API Console e configure seu projeto do Android Studio .

Configurar o Login do Google e o objeto GoogleSignInClient

  1. No método onCreate da sua atividade de login, configure o Login do Google para solicitar os dados do usuário exigidos pelo seu aplicativo. Por exemplo, para configurar o Login do Google para solicitar o ID dos usuários e as informações básicas do perfil, crie um objeto GoogleSignInOptions com o parâmetro DEFAULT_SIGN_IN . Para solicitar também os endereços de e-mail dos usuários, crie o objeto GoogleSignInOptions com a opção requestEmail .

    // Configure sign-in to request the user's ID, email address, and basic
    // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    Se você precisar solicitar escopos adicionais para acessar as APIs do Google, especifique-os com requestScopes . Para obter a melhor experiência do usuário, ao entrar, solicite apenas os escopos necessários para que seu aplicativo funcione minimamente. Solicite escopos adicionais somente quando precisar deles, para que seus usuários vejam a tela de consentimento no contexto de uma ação que eles executaram. Consulte Solicitando escopos adicionais .

  2. Em seguida, também no método onCreate da sua atividade de login, crie um objeto GoogleSignInClient com as opções especificadas.

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Verifique se há um usuário conectado existente

No método onStart da sua atividade, verifique se um usuário já fez login no seu aplicativo com o Google.

// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);

Se GoogleSignIn.getLastSignedInAccount retornar um objeto GoogleSignInAccount (em vez de null ), o usuário já fez login em seu aplicativo com o Google. Atualize sua interface do usuário de acordo, ou seja, oculte o botão de login, inicie sua atividade principal ou o que for apropriado para seu aplicativo.

Se GoogleSignIn.getLastSignedInAccount retornar null , o usuário ainda não fez login no seu aplicativo com o Google. Atualize sua IU para exibir o botão de login do Google.

Adicione o botão de login do Google ao seu aplicativo

  1. O botão de login padrão do Google Adicione o SignInButton no layout do seu aplicativo:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. Opcional : se você estiver usando o gráfico de botão de login padrão em vez de fornecer seus próprios recursos de botão de login, poderá personalizar o tamanho do botão com o método setSize .

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. Na atividade do Android (por exemplo, no método onCreate ), registre o OnClickListener do seu botão para fazer o login do usuário quando clicado:

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

Iniciar o fluxo de login

  1. Imagem do seletor de conta de login No método onClick da atividade, gerencie os toques no botão de login criando um intent de login com o método getSignInIntent e iniciando o intent com startActivityForResult .

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.sign_in_button:
                signIn();
                break;
            // ...
        }
    }
    
    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    Iniciar o intent solicita que o usuário selecione uma conta do Google para fazer login. Se você solicitou escopos além de profile , email e openid , o usuário também será solicitado a conceder acesso aos recursos solicitados.

  2. Depois que o usuário fizer login, você poderá obter um objeto GoogleSignInAccount para o usuário no método onActivityResult da atividade.

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
        }
    }

    O objeto GoogleSignInAccount contém informações sobre o usuário conectado, como o nome do usuário.

    private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
    
            // Signed in successfully, show authenticated UI.
            updateUI(account);
        } catch (ApiException e) {
            // The ApiException status code indicates the detailed failure reason.
            // Please refer to the GoogleSignInStatusCodes class reference for more information.
            Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
            updateUI(null);
        }
    }

    Você também pode obter o endereço de e-mail do usuário com getEmail , o ID do Google do usuário (para uso do lado do cliente) com getId e um token de ID para o usuário com getIdToken . Se você precisar passar o usuário conectado no momento para um servidor de back-end, envie o token de ID para seu servidor de back-end e valide o token no servidor.