Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Para integrar o Login do Google ao seu app Android, configure o Login do Google e
adicione um botão ao layout do app que inicie o fluxo de login.
Antes de começar
Configure um projeto do Console de APIs do Google e um projeto do Android Studio.
Configurar o Login do Google e o objeto GoogleSignInClient
No método onCreate da atividade de login, configure o Login do Google para
solicitar os dados de usuário necessários no acesso ao app. Por exemplo, para configurar
o Login do Google para solicitar o ID e as informações básicas de perfil dos usuários, 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.GoogleSignInOptionsgso=newGoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
Se você precisar solicitar escopos extras para acessar as APIs do Google, especifique-os
com requestScopes.
Para garantir a melhor experiência do usuário, ao fazer login, solicite apenas os escopos necessários para que o app funcione minimamente. Solicite outros escopos
apenas quando precisar deles. Assim, os usuários vão ver a tela de consentimento no
contexto de uma ação que eles realizaram.
Consulte Como solicitar mais escopos.
Em seguida, também no método onCreate da 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);
Verificar se já existe um usuário conectado
No método onStart da atividade, verifique se um usuário já fez login no
app com o Google.
// Check for existing Google Sign In account, if the user is already signed in// the GoogleSignInAccount will be non-null.GoogleSignInAccountaccount=GoogleSignIn.getLastSignedInAccount(this);updateUI(account);
Se GoogleSignIn.getLastSignedInAccount retornar um objeto GoogleSignInAccount (em vez de null), o usuário já terá feito login no seu app com o Google.
Atualize a interface de acordo com isso. Ou seja, oculte o botão de login, inicie a
atividade principal ou o que for apropriado para seu app.
Se GoogleSignIn.getLastSignedInAccount retornar null, o usuário ainda não fez
login no seu app com o Google. Atualize a interface para mostrar o botão
de Login do Google.
Opcional: se você estiver usando o gráfico do botão de login padrão em vez de
fornecer seus próprios recursos, personalize o tamanho do botão com o método
setSize.
// Set the dimensions of the sign-in button.SignInButtonsignInButton=findViewById(R.id.sign_in_button);signInButton.setSize(SignInButton.SIZE_STANDARD);
Na atividade do Android, por exemplo, no método onCreate, registre o OnClickListener do botão para fazer login do usuário quando clicado:
No método onClick da atividade, processe os toques no botão de login criando uma
intent de login com o método getSignInIntent
e iniciando a intent com startActivityForResult.
Ao iniciar a intent, o usuário precisa selecionar uma Conta do Google para fazer login. Se você solicitar escopos além de profile, email e openid, o
usuário também vai precisar conceder acesso aos recursos solicitados.
Depois que o usuário fizer login, você poderá receber um objeto GoogleSignInAccount
para ele no método onActivityResult da atividade.
Você também pode receber 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 transmitir o usuário conectado no momento para um servidor de back-end,
envie o token de ID para o servidor de back-end
e valide o token no servidor.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Integrate Google Sign-In into Your Android App\n\n| **Warning:**\n|\n| **The Google Sign-In for Android API is outdated and no longer supported.**\n| To ensure the continued security and usability of your app, [migrate your Sign in with\n| Google implementation to Credential Manager](/identity/sign-in/credential-manager-siwg) today. Credential Manager\n| supports passkey, password, and federated identity authentication (such as\n| Sign-in with Google), stronger security, and a more consistent user\n| experience.\n|\n| **For Wear developers:** Credential Manager will be supported in Wear OS\n| 5.1 and later on selected watches. Developers actively supporting Wear OS 3, 4\n| and 5.0 devices with Sign in with Google should continue using Google Sign-in\n| for Android for your Wear applications. Sign in with Google support will be\n| available on Credential Manager APIs for these versions of WearOS at a later\n| date.\n\nTo integrate Google Sign-In into your Android app, configure Google Sign-In and\nadd a button to your app's layout that starts the sign-in flow.\n\nBefore you begin\n----------------\n\nConfigure a Google API Console project and set up your Android Studio project.\n\nConfigure Google Sign-in and the GoogleSignInClient object\n----------------------------------------------------------\n\n1. In your sign-in activity's `onCreate` method, configure Google Sign-In to\n request the user data required by your app. For example, to configure\n Google Sign-In to request users' ID and basic profile information, create a\n [`GoogleSignInOptions`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInOptions.Builder.html#GoogleSignInOptions.Builder())\n object with the `DEFAULT_SIGN_IN` parameter. To request users' email\n addresses as well, create the `GoogleSignInOptions` object with the\n `requestEmail` option.\n\n ```carbon\n // Configure sign-in to request the user's ID, email address, and basic\n // profile. ID and basic profile are included in DEFAULT_SIGN_IN.\n GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)\n .requestEmail()\n .build();\n ```\n\n If you need to request additional scopes to access Google APIs, specify them\n with [`requestScopes`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInOptions.Builder.html#requestScopes(com.google.android.gms.common.api.Scope,%20com.google.android.gms.common.api.Scope...)).\n For the best user experience, on sign-in, only request the scopes that are\n required for your app to minimally function. Request any additional scopes\n only when you need them, so that your users see the consent screen in the\n context of an action they performed.\n See [Requesting Additional Scopes](https://developers.google.com/identity/sign-in/android/additional-scopes).\n2. Then, also in your sign-in activity's `onCreate` method, create a\n `GoogleSignInClient` object with the options you specified.\n\n ```scilab\n // Build a GoogleSignInClient with the options specified by gso.\n mGoogleSignInClient = GoogleSignIn.getClient(this, gso);\n ```\n\nCheck for an existing signed-in user\n------------------------------------\n\nIn your activity's `onStart` method, check if a user has already signed in to\nyour app with Google. \n\n```scilab\n// Check for existing Google Sign In account, if the user is already signed in\n// the GoogleSignInAccount will be non-null.\nGoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);\nupdateUI(account);\n```\n\nIf `GoogleSignIn.getLastSignedInAccount` returns a `GoogleSignInAccount` object\n(rather than `null`), the user has already signed in to your app with Google.\nUpdate your UI accordingly---that is, hide the sign-in button, launch your\nmain activity, or whatever is appropriate for your app.\n\nIf `GoogleSignIn.getLastSignedInAccount` returns `null`, the user has not yet\nsigned in to your app with Google. Update your UI to display the Google Sign-in\nbutton.\n| **Note:** If you need to detect changes to a user's auth state that happen outside your app, such as access token or ID token revocation, or to perform cross-device sign-in, you might also call `GoogleSignInClient.silentSignIn` when your app starts.\n\nAdd the Google Sign-in button to your app\n-----------------------------------------\n\n1.\n Add the [`SignInButton`](https://developers.google.com/android/reference/com/google/android/gms/common/SignInButton)\n in your application's layout:\n\n \u003ccom.google.android.gms.common.SignInButton\n android:id=\"@+id/sign_in_button\"\n android:layout_width=\"wrap_content\"\n android:layout_height=\"wrap_content\" /\u003e\n\n2. **Optional** : If you are using the default sign-in button graphic instead of\n providing your own sign-in button assets, you can customize the button's\n size with the [`setSize`](https://developers.google.com/android/reference/com/google/android/gms/common/SignInButton.html#setSize(int))\n method.\n\n ```scilab\n // Set the dimensions of the sign-in button.\n SignInButton signInButton = findViewById(R.id.sign_in_button);\n signInButton.setSize(SignInButton.SIZE_STANDARD);\n ```\n3. In the Android activity (for example, in the `onCreate` method), register\n your button's `OnClickListener` to sign in the user when clicked:\n\n findViewById(R.id.sign_in_button).setOnClickListener(this);\n\nStart the sign-in flow\n----------------------\n\n1.\n In the activity's `onClick` method, handle sign-in button taps by creating a\n sign-in intent with the [`getSignInIntent`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInClient#getSignInIntent())\n method, and starting the intent with `startActivityForResult`.\n\n @Override\n public void onClick(View v) {\n switch (v.getId()) {\n case R.id.sign_in_button:\n signIn();\n break;\n // ...\n }\n }\n\n ```scdoc\n private void signIn() {\n Intent signInIntent = mGoogleSignInClient.getSignInIntent();\n startActivityForResult(signInIntent, RC_SIGN_IN);\n }\n ```\n\n Starting the intent prompts the user to select a Google Account to sign in\n with. If you requested scopes beyond `profile`, `email`, and `openid`, the\n user is also prompted to grant access to the requested resources.\n2. After the user signs in, you can get a [`GoogleSignInAccount`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount.html)\n object for the user in the activity's `onActivityResult` method.\n\n ```transact-sql\n @Override\n public void onActivityResult(int requestCode, int resultCode, Intent data) {\n super.onActivityResult(requestCode, resultCode, data);\n\n // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);\n if (requestCode == RC_SIGN_IN) {\n // The Task returned from this call is always completed, no need to attach\n // a listener.\n Task\u003cGoogleSignInAccount\u003e task = GoogleSignIn.getSignedInAccountFromIntent(data);\n handleSignInResult(task);\n }\n }\n ```\n\n The `GoogleSignInAccount` object contains information about the signed-in\n user, such as the user's name. \n\n ```css+lasso\n private void handleSignInResult(Task\u003cGoogleSignInAccount\u003e completedTask) {\n try {\n GoogleSignInAccount account = completedTask.getResult(ApiException.class);\n\n // Signed in successfully, show authenticated UI.\n updateUI(account);\n } catch (ApiException e) {\n // The ApiException status code indicates the detailed failure reason.\n // Please refer to the GoogleSignInStatusCodes class reference for more information.\n Log.w(TAG, \"signInResult:failed code=\" + e.getStatusCode());\n updateUI(null);\n }\n }\n ```\n\n You can also get the user's email address with [`getEmail`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount.html#getEmail()),\n the user's Google ID (for client-side use) with [`getId`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount.html#getId()),\n and an ID token for the user with [`getIdToken`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount.html#getIdToken()).\n If you need to pass the currently signed-in user to a backend server,\n [send the ID token to your backend server](https://developers.google.com/identity/sign-in/android/backend-auth)\n and validate the token on the server."]]