Nuova API Accedi con Google

I Servizi di identità Google (GIS) sono un nuovo insieme di API che forniscono agli utenti funzionalità di accesso e registrazione facili e sicure, in un pacchetto di facile implementazione per gli sviluppatori. Questo documento descrive in dettaglio una nuova API Accedi con Google (parte di GIS) che può essere utilizzata per avviare il flusso di accesso o registrazione quando un utente tocca un pulsante "Accedi con Google". Questa API può essere utilizzata al posto delle API Accedi con Google esistenti per i flussi di accesso.

Devi utilizzare questa API solo quando l'utente mostra esplicitamente l'intenzione di accedere con Google. Ad esempio, puoi usare questa API quando gli utenti fanno clic su un pulsante "Accedi con Google" nella tua app.

Non devi utilizzare questa API per richiedere all'utente di accedere all'avvio dell'app o in risposta a un altro attivatore, ad esempio l'aggiunta di un articolo al carrello degli acquisti. Per questi casi d'uso, utilizza Accesso e registrazione One Tap.

Quando avvii il flusso Accedi con Google con la nuova API, verrà visualizzata questa UI:

Accedi con Google

Prima di iniziare

Configura un progetto nella Console API di Google e imposta il tuo progetto Android Studio.

Effettua una richiesta di accesso

Per avviare un flusso Accedi con Google utilizzando l'API Identity, crea un oggetto GetSignInRequest. Quindi, durante una chiamata all'oggetto SignInClient getSignInIntent. Questa chiamata è asincrona e, in caso di esito positivo, fornirà un PendingIntent per avviare 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. L'oggetto SignInCredential restituito da getSignInCredentialFromIntent contiene informazioni su un accesso valido. Se per qualche motivo l'utente non riesce ad accedere, viene visualizzato un ApiException.

    @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
});

In caso di accesso riuscito, l'utente restituisce sempre il nome completo, l'indirizzo email e l'URL dell'immagine del profilo. Se hai bisogno di ulteriori informazioni, puoi indirizzare gli utenti a un flusso completo di dati del profilo.