I servizi di identità Google (GIS) sono un nuovo insieme di API che offre agli utenti accesso e registrazione sicuri in un pacchetto di facile implementazione per gli sviluppatori. Questo documento descrive una nuova API Accedi con Google (parte di GIS) che può essere utilizzata per: Avvia il flusso di accesso o registrazione quando un utente tocca un'opzione "Accedi con Google" . Questa API può essere utilizzata al posto delle API Accedi con Google esistenti per di accesso.
Dovresti usare questa API solo quando l'utente mostra esplicitamente l'intenzione di accedere con Google. Ad esempio, utilizza questa API quando fanno clic su "Accedi con Google" nell'app.
Non devi utilizzare questa API per richiedere all'utente di eseguire l'accesso all'avvio o nell'accesso all'app risposta a un altro attivatore, ad esempio l'aggiunta di un articolo al carrello degli acquisti. Per questi casi d'uso, usa Accesso e registrazione con One Tap.
Quando avvii il flusso di Accedi con Google con la nuova API, verrà visualizzato questo Interfaccia utente:
Prima di iniziare
Configura un progetto della console API di Google e imposta il tuo progetto Android Studio.
Inviare una richiesta di accesso
Per avviare un flusso di Accedi con Google utilizzando l'API Identity, crea un
GetSignInRequest
oggetto. Quindi, durante una chiamata all'oggetto SignInClient
getSignInIntent
. Questa chiamata è asincrona e, se l'operazione riesce, fornirà un
PendingIntent
per aprire la finestra di dialogo.
private static final int REQUEST_CODE_GOOGLE_SIGN_IN = 1; /* unique request id */
private void signIn() {
GetSignInIntentRequest request =
GetSignInIntentRequest.builder()
.setServerClientId(getString(R.string.server_client_id))
.build();
Identity.getSignInClient(activity)
.getSignInIntent(request)
.addOnSuccessListener(
result -> {
try {
startIntentSenderForResult(
result.getIntentSender(),
REQUEST_CODE_GOOGLE_SIGN_IN,
/* fillInIntent= */ null,
/* flagsMask= */ 0,
/* flagsValue= */ 0,
/* extraFlags= */ 0,
/* options= */ null);
} catch (IntentSender.SendIntentException e) {
Log.e(TAG, "Google Sign-in failed");
}
})
.addOnFailureListener(
e -> {
Log.e(TAG, "Google Sign-in failed", e);
});
}
Gestire i risultati di accesso
In onActivityResult
recupera un SignInCredential
. SignInCredential
l'oggetto restituito da getSignInCredentialFromIntent
contiene informazioni
su credenziali di accesso valide. Se l'utente non riesce ad accedere per qualche motivo, verrà visualizzata una
ApiException
viene lanciata.
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
try {
SignInCredential credential = Identity.getSignInClient(this).getSignInCredentialFromIntent(data);
// Signed in successfully - show authenticated UI
updateUI(credential);
} catch (ApiException e) {
// The ApiException status code indicates the detailed failure reason.
}
}
}
}
private ActivityResultLauncher<IntentSenderRequest> loginResultHandler = registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
// handle intent result here
});
Se l'accesso viene eseguito correttamente, vengono sempre restituiti il nome completo, l'indirizzo email e e l'URL dell'immagine del profilo. Se hai bisogno di ulteriori informazioni, puoi indirizzare gli utenti in un flusso di informazioni del profilo completo.