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.

Eseguire la migrazione da GoogleAuthUtil e Plus.API

Se in passato hai eseguito l'integrazione con Accedi con Google utilizzando GoogleAuthUtil.getToken o Plus.API, devi eseguire la migrazione all'API Sign-in più recente per aumentare la sicurezza e migliorare l'esperienza utente.

Esegui la migrazione dal token dell'accesso anti-pattern

Non dovresti inviare token di accesso ottenuti con GoogleAuthUtil.getToken al tuo server di backend come asserzione di identità, poiché non puoi verificare facilmente che il token sia stato emesso nel backend, lasciandoti vulnerabile all'inserimento di un token di accesso da parte di un utente malintenzionato.

Ad esempio, se il tuo codice Android è simile all'esempio che segue, devi eseguire la migrazione della tua app alle best practice attuali.

Codice Android

Nell'esempio, le richieste di token di accesso utilizzano oauth2: più una stringa di ambito come parametro scope per la chiamata GoogleAuthUtil.getToken (oauth2:https://www.googleapis.com/auth/plus.login).

Anziché eseguire l'autenticazione con un token di accesso acquisito con GoogleAuthUtil.getToken, utilizza il flusso del token ID o il flusso del codice di autenticazione.

Esegui la migrazione al flusso di token ID

Se ti bastano l'ID dell'utente, l'indirizzo email, il nome o l'URL dell'immagine del profilo, utilizza il flusso del token ID.

Per eseguire la migrazione al flusso di token ID, apporta le seguenti modifiche:

Lato client Android

  • Revoca l'autorizzazione GET_ACCOUNTS (Contatti) se la richiedi
  • Passa a un codice utilizzando GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() o AccountManager.newChooseAccountIntent() in Auth.GOOGLE_SIGN_IN_API con la configurazione GoogleSignInOptions.Builder.requestIdToken(...).

Lato server

Esegui la migrazione al flusso di codice di autenticazione del server

Se il tuo server deve accedere ad altre API di Google, come Google Drive, YouTube o Contatti, utilizza il flusso del codice di autenticazione del server.

Per eseguire la migrazione al flusso del codice di autenticazione server, apporta le seguenti modifiche:

Lato client Android

  • Revoca l'autorizzazione GET_ACCOUNTS (Contatti) se la richiedi
  • Passa a un codice utilizzando GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() o AccountManager.newChooseAccountIntent() in Auth.GOOGLE_SIGN_IN_API con la configurazione GoogleSignInOptions.Builder.requestServerAuthCode(...).

Lato server

Puoi comunque condividere la logica di accesso API tra il vecchio e il nuovo endpoint. Ad esempio:

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(...);
String accessToken = tokenResponse.getAccessToken();
String refreshToken = tokenResponse.getRefreshToken();
Long expiresInSeconds = tokenResponse.getExpiresInSeconds();

// Shared by your old and new implementation, old endpoint can pass null for refreshToken
private void driveAccess(String refreshToken, String accessToken, Long expiresInSeconds) {
   GoogleCredential credential = new GoogleCredential.Builder()
           .setTransPort(...)
           ...
           .build();
   credential.setAccessToken(accessToken);
   credential.setExpiresInSeconds(expiresInSeconds);
   credential.setRefreshToken(refreshToken);
}

Eseguire la migrazione dal flusso di token ID GoogleAuthUtil

Se utilizzi GoogleAuthUtil per ottenere i token ID, devi eseguire la migrazione al nuovo flusso del token ID dell'API Sign-In.

Ad esempio, se il tuo codice Android è simile all'esempio seguente, devi eseguire la migrazione:

Codice Android

Nell'esempio, le richieste di token ID utilizzano audience:server:client_id più l'ID client per il tuo server web come parametro "scope" per la chiamata GoogleAuthUtil.getToken (audience:server:client_id:9414861317621.apps.googleusercontent.com).

Il nuovo flusso di token ID dell'API Sign-In offre i seguenti vantaggi:

  • Accedi con un solo tocco
  • Il tuo server può ricevere informazioni sul profilo dell'utente senza chiamate di rete aggiuntive

Per eseguire la migrazione al flusso di token ID, apporta le seguenti modifiche:

Lato client Android

  • Revoca l'autorizzazione GET_ACCOUNTS (Contatti) se la richiedi
  • Passa a un codice utilizzando GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() o AccountManager.newChooseAccountIntent() in Auth.GOOGLE_SIGN_IN_API con la configurazione GoogleSignInOptions.Builder.requestIdToken(...).

Lato server

La nuova API Sign-In emette i token ID conformi alla specifica di OpenID Connect, a differenza di GoogleAuthUtil.getToken, che utilizza un formato deprecato. In particolare, l'emittente è ora https://accounts.google.com, con uno schema https.

Durante il processo di migrazione, il server deve verificare il token ID sia dal client Android precedente sia da quello nuovo. Per verificare entrambi i formati del token, apporta la modifica corrispondente alla libreria client che utilizzi (se ne utilizzi una):

  • Java (librerie client delle API di Google): esegui l'upgrade alla versione 1.21.0 o successiva
  • PHP (librerie client delle API di Google): se utilizzi la versione v1, esegui l'upgrade alla versione 1.1.6 o successiva; se utilizzi la versione v2, esegui l'upgrade alla versione 2.0.0-RC1 o successiva
  • Node.js: upgrade a 0.9.7 o versioni successive
  • Python o le tue implementazioni: accetta entrambi questi emittenti: https://accounts.google.com e accounts.google.com

Eseguire la migrazione dal flusso di codice di autenticazione server GoogleAuthUtil

Se utilizzi GoogleAuthUtil per ottenere un codice di autenticazione server, devi eseguire la migrazione al nuovo flusso del codice di autorizzazione dell'API Sign-In.

Ad esempio, se il tuo codice Android è simile all'esempio seguente, devi eseguire la migrazione:

Codice Android

Nell'esempio, le richieste di codice di autenticazione server utilizzano oauth2:server:client_id + l'ID client per il tuo server web come parametro scope per la chiamata GoogleAuthUtil.getToken (oauth2:server:client_id:9414861317621.apps.googleusercontent.com).

Il nuovo flusso di codice di autorizzazione dell'API Sign-In offre i seguenti vantaggi:

  • Accedi con un solo tocco
  • Se segui la guida alla migrazione riportata di seguito, quando esegui lo scambio di codice di autenticazione il tuo server può ricevere un token ID contenente le informazioni del profilo dell'utente.

Per eseguire la migrazione al nuovo flusso di codice di autorizzazione, apporta le seguenti modifiche:

Lato client Android

  • Revoca l'autorizzazione GET_ACCOUNTS (Contatti) se la richiedi
  • Passa a un codice utilizzando GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() o AccountManager.newChooseAccountIntent() in Auth.GOOGLE_SIGN_IN_API con la configurazione GoogleSignInOptions.Builder.requestServerAuthCode(...).

Lato server

Mantieni il tuo codice attuale, ma specifica https://oauth2.googleapis.com/token come endpoint del server di token durante la creazione dell'oggetto GoogleAuthorizationCodeTokenRequest in modo da ottenere un token ID con l'indirizzo email, lo User-ID e le informazioni del profilo dell'utente senza che sia necessaria un'altra chiamata di rete. Questo endpoint è completamente compatibile con le versioni precedenti e il codice riportato di seguito funzionerà per i codici di autenticazione del server recuperati dalle implementazioni client Android nuove e precedenti.

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(
                transport,
                jsonFactory,
                // Use below for tokenServerEncodedUrl parameter
                "https://oauth2.googleapis.com/token",
                clientSecrets.getDetails().getClientId(),
                clientSecrets.getDetails().getClientSecret(),
                authCode,
                REDIRECT_URI)
               .execute();

...

// You can also get an ID token from auth code exchange.
GoogleIdToken googleIdToken = tokenResponse.parseIdToken();
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
        .setAudience(Arrays.asList(SERVER_CLIENT_ID))
        .setIssuer("https://accounts.google.com")
        .build();
// Refer to ID token documentation to see how to get data from idToken object.
GoogleIdToken idToken = verifier.verify(idTokenString);
...