Autenticar com um back-end usando tokens de ID

O cliente de login com um toque recupera um token de ID do Google quando o usuário seleciona uma Conta do Google. Um token de ID é uma declaração assinada da identidade de um usuário que também contém as informações básicas do perfil dele, possivelmente incluindo um endereço de e-mail que foi verificado pelo Google.

Quando os tokens de ID estão disponíveis, é possível usá-los para autenticar com segurança o back-end do app ou para inscrever automaticamente o usuário em uma nova conta sem precisar verificar o endereço de e-mail dele.

Para fazer login ou inscrever um usuário com um token de ID, envie o token para o back-end do seu app. No back-end, verifique o token usando uma biblioteca de cliente da API do Google ou uma biblioteca JWT de uso geral. Se o usuário não tiver feito login no seu app com essa Conta do Google antes, crie uma nova conta.

Se você optou por usar um valor de uso único para evitar ataques de repetição, use getNonce para enviá-lo com o token de ID ao servidor de back-end e verifique o valor esperado. Recomendamos que você considere usar um nonce para melhorar a segurança do usuário.

Receber um token de ID do objeto de credenciais

Depois de recuperar as credenciais de um usuário, verifique se o objeto de credenciais inclui um token de ID. Se houver, envie-o para o back-end.

Java

public class YourActivity extends AppCompatActivity {

    // ...
    private static final int REQ_ONE_TAP = 2;  // Can be any integer unique to the Activity.
    private boolean showOneTapUI = true;
    // ...

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
            case REQ_ONE_TAP:
                try { 
                    SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(data);
                    String idToken = credential.getGoogleIdToken();
                    if (idToken !=  null) {
                        // Got an ID token from Google. Use it to authenticate
                        // with your backend.
                        Log.d(TAG, "Got ID token.");
                    }
                } catch (ApiException e) {
                    // ...
                }
                break;
        }
    }
}

Kotlin

class YourActivity : AppCompatActivity() {

      // ...
      private val REQ_ONE_TAP = 2  // Can be any integer unique to the Activity
      private var showOneTapUI = true
      // ...

      override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
          super.onActivityResult(requestCode, resultCode, data)

          when (requestCode) {
               REQ_ONE_TAP -> {
                  try { 
                      val credential = oneTapClient.getSignInCredentialFromIntent(data)
                      val idToken = credential.googleIdToken
                      when {
                          idToken != null -> {
                              // Got an ID token from Google. Use it to authenticate
                              // with your backend.
                              Log.d(TAG, "Got ID token.")
                          }
                          else -> {
                              // Shouldn't happen.
                              Log.d(TAG, "No ID token!")
                          }
                      }
                  } catch (e: ApiException) {
                      // ...
              }
          }
      }
      // ...
  }