Stiamo ritirando la Libreria JavaScript di Accedi con Google per il Web. La raccolta non sarà più disponibile per il download dopo la data di ritiro il 31 marzo 2023. Utilizza invece i nuovi servizi Google Identity per il Web.
Per impostazione predefinita, ora gli ID client appena creati non possono utilizzare la libreria Platform precedente, mentre gli ID client esistenti non sono interessati. I nuovi ID client creati prima del 29 luglio 2022 possono impostare `plugin_name` per abilitare l'utilizzo della Libreria Google Platform.

Integrazione di Accedi con Google nell'app Android

Per integrare l'opzione Accedi con Google nell'app Android, configura l'opzione Accedi con Google e aggiungi un pulsante al layout dell'app che avvia la procedura di accesso.

Prima di iniziare

Configura un progetto nella console API di Google e configura il tuo progetto Android Studio.

Configurare Accedi con Google e l'oggetto GoogleSignInClient

  1. Nel metodo onCreate dell'attività di accesso, configura l'opzione Accedi con Google per richiedere i dati utente richiesti dall'app. Ad esempio, per configurare Accedi con Google in modo che richieda gli utenti e l'ID del profilo di base, crea un oggetto GoogleSignInOptions con il parametro DEFAULT_SIGN_IN. Per richiedere anche gli indirizzi email degli utenti, crea l'oggetto GoogleSignInOptions con l'opzione 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 devi richiedere ambiti aggiuntivi per accedere alle API di Google, specificale con requestScopes. Per garantire un'esperienza utente ottimale, al momento dell'accesso richiedi soltanto il funzionamento minimo degli ambiti necessari per la tua app. Richiedi eventuali ambiti aggiuntivi solo quando ne hai bisogno, in modo che gli utenti vedano la schermata di consenso nel contesto di un'azione che hanno eseguito. Consulta la sezione Richiedere ambiti aggiuntivi.

  2. Quindi, anche nel metodo onCreate dell'attività di accesso, crea un oggetto GoogleSignInClient con le opzioni specificate.

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

Verificare la presenza di un utente che ha eseguito l'accesso esistente

Nel metodo onStart dell'attività, controlla se un utente ha già eseguito l'accesso alla tua app con 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 restituisce un oggetto GoogleSignInAccount (anziché null), l'utente ha già eseguito l'accesso alla tua app con Google. Aggiorna l'interfaccia utente di conseguenza, ovvero nascondi il pulsante di accesso, avvia l'attività principale o qualsiasi altra opzione appropriata per la tua app.

Se GoogleSignIn.getLastSignedInAccount restituisce null, l'utente non ha ancora eseguito l'accesso alla tua app con Google. Aggiorna l'interfaccia utente per visualizzare il pulsante Accedi con Google.

Aggiungere il pulsante Accedi con Google all'app

  1. Il pulsante di accesso standard di Google Aggiungi il layout SignInButton nel layout della tua applicazione:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. Facoltativo: se utilizzi l'immagine predefinita del pulsante di accesso invece di fornire i tuoi asset per il pulsante di accesso, puoi personalizzare la dimensione del pulsante con il metodo setSize.

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. Nell'attività Android (ad esempio, nel metodo onCreate), registra il pulsante OnClickListener per l'accesso dell'utente quando viene fatto clic:

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

Avviare la procedura di accesso

  1. Immagine del selettore account di accesso Nel metodo onClick dell'attività, gestisci i tocchi del pulsante di accesso creando un intent di accesso con il metodo getSignInIntent e avviando l'intent con 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);
    }

    L'avvio dell'intent richiede all'utente di selezionare un Account Google con cui accedere. Se hai richiesto ambiti diversi da profile, email e openid, all'utente viene richiesto di concedere l'accesso alle risorse richieste.

  2. Dopo che l'utente ha eseguito l'accesso, puoi ottenere un oggetto GoogleSignInAccount per l'utente nel metodo onActivityResult dell'attività.

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

    L'oggetto GoogleSignInAccount contiene informazioni sull'utente che ha eseguito l'accesso, ad esempio il nome dell'utente.

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

    Puoi anche ottenere l'indirizzo email dell'utente con getEmail, l'ID Google dell'utente (per uso lato client) con getId e un token ID per l'utente con getIdToken. Se devi passare l'utente che ha eseguito l'accesso al server di backend, invialo al tuo server di backend e convalidalo su quel server.