Eseguire la migrazione dall'accesso a Google+

Passaggi per ridurre al minimo l'impatto delle modifiche dell'ambito sugli utenti

  1. Se la tua applicazione richiede l'indirizzo email di un utente autenticato e in precedenza hai utilizzato profile.emails.read per tale scopo, usa invece email.
  2. Ottieni l'approvazione di profile.emails.read con una richiesta di verifica approvata. Consulta l'articolo Come faccio a richiedere la verifica?
  3. Revoca il token dell'utente precedente all'ambito che deve essere rimosso oppure rimuovi completamente l'accesso all'applicazione. Ad esempio, un token con accesso profile.emails.read dovrebbe essere revocato. Ti consigliamo di applicare la revoca mentre gli utenti sono all'interno dell'applicazione, per poter ottenere immediatamente il consenso degli utenti.
  4. Chiedi agli utenti di fornire nuovamente il consenso con il nuovo ambito, ad esempio email, senza profile.emails.read.
  5. Rimuovi l'ambito da eliminare gradualmente dalla configurazione della schermata di consenso OAuth delle API di Google.
di Gemini Advanced.

Le modifiche che devi apportare per eseguire la migrazione del tuo sito dall'Accesso a Google+ a Google La modalità di accesso dipende dal flusso di accesso a Google+ che utilizzi. In genere, la migrazione richiede l'aggiornamento del pulsante di accesso, degli ambiti richiesti e delle istruzioni su come recuperare le informazioni del profilo da Google.

Quando aggiorni il pulsante di accesso, non fare riferimento a G+ e non utilizzare il colore rosso. In conformità alle nostre linee guida per il branding.

La maggior parte delle applicazioni di Accesso a Google+ ha richiesto una combinazione degli ambiti: plus.login, plus.me e plus.profile.emails.read. È necessario rimappare gli ambiti nel seguente modo:

Ambito precedente Nuovo ambito
plus.login profile
plus.me openid
plus.profile.emails.read email

Molti utenti che implementano l'opzione Accesso a Google+ hanno utilizzato flusso del codice. Ciò significa che le app per Android, iOS o JavaScript ricevano un codice OAuth da Google; e il client restituisce questo codice al server insieme alla richiesta tra siti e la protezione dalla falsificazione. Il server quindi convalida il codice e ottiene l'aggiornamento token di accesso per estrarre le informazioni del profilo utente dall'API people.get.

Google ora consiglia di richiedere un token ID e di inviarlo da tra il tuo client e il tuo server. I token ID hanno protezioni dalla contraffazione tra siti sono integrati e possono essere verificati in modo statico sul server, evitando chiamata API aggiuntiva per ottenere informazioni del profilo utente dai server di Google. Segui le istruzioni per convalidare i token ID sul tuo server.

Se preferisci comunque utilizzare il flusso di codice per ottenere informazioni sul profilo, puoi farlo. Una volta che il server dispone di un token di accesso, ottenere informazioni sul profilo utente dagli endpoint userinfo specificati nella nostra Documento di rilevamento: L'API la risposta ha una formattazione diversa da quella del profilo Google+, quindi devi aggiornare l'analisi al nuovo formato.

Eseguire la migrazione di un pulsante di accesso HTML

Se hai incluso nella pagina un pulsante di accesso a Google+ in base al compito assegnato al corso g-signin a un elemento, apporta le seguenti modifiche:

  • Quando specifichi il tuo ID cliente in un tag <meta>, un data- o un oggetto parametri, modifica la stringa clientid in client_id, come nell'esempio seguente:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Assegna la classe g-signin2 all'elemento del pulsante di accesso anziché g-signin. Inoltre, specifica callback di operazione riuscita e non riuscita anziché un un singolo callback, come nell'esempio seguente:

    <!-- Google+ Sign-in (old) -->
    <div
      class="g-signin"
      data-callback="signinCallback">
    </div>
    

    <!-- Google Sign-in (new) -->
    <div
      class="g-signin2"
      data-onsuccess="onSignIn"
      data-onfailure="onSignInFailure">
    </div>
    
  • Anziché un singolo gestore di callback, definisci i gestori di operazioni riuscite e non riuscite. come nell'esempio seguente:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    
  • Queste modifiche aggiornano gli ambiti predefiniti a profile email openid. Puoi visualizzare le informazioni di base del profilo dell'utente, come nome, email e foto come URL dell'immagine:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

Eseguire la migrazione di un pulsante di accesso con rendering dinamico

Se hai incluso nella tua pagina un pulsante Accedi a Google+ chiamando gapi.signin.render(), apporta le seguenti modifiche:

  • Quando specifichi il tuo ID cliente in un tag <meta>, un data- o un oggetto parametri, modifica la stringa clientid in client_id, come nell'esempio seguente:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Visualizza il pulsante di accesso con gapi.signin2.render() anziché con gapi.signin.render(), come nell'esempio seguente:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • Anziché un singolo gestore di callback, definisci i gestori di operazioni riuscite e non riuscite. come nell'esempio seguente:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Queste modifiche aggiornano gli ambiti predefiniti a profile email openid. Puoi trovare le informazioni di base del profilo dell'utente con il metodo getBasicProfile().

Eseguire la migrazione di un flusso di accesso avviato da JavaScript

Se hai avviato il flusso di accesso con una chiamata al numero gapi.auth.signIn() quando gli utenti fai clic sul pulsante di accesso, apporta le seguenti modifiche:

  • Quando specifichi il tuo ID cliente in un tag <meta>, un data- o un oggetto parametri, modifica la stringa clientid in client_id, come nell'esempio seguente:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Usa gapi.auth2.attachClickHandler() per avviare il flusso di accesso quando viene visualizzato un pulsante come nell'esempio seguente:

    // Google+ Sign-in (old)
    var signinButton = document.getElementById('signinButton');
    signinButton.addEventListener('click', function() {
      gapi.auth.signIn(additionalParams);
    });
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init();
    auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
    
  • Anziché un singolo gestore di callback, definisci i gestori di operazioni riuscite e non riuscite. come nell'esempio seguente:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Queste modifiche aggiornano gli ambiti predefiniti a profile email openid. Puoi trova le informazioni di base del profilo dell'utente chiamando il getBasicProfile() .

Esegui la migrazione di un flusso lato server ibrido

Se hai utilizzato l'API JavaScript per acquisire un codice di autorizzazione una tantum da passare al server, apporta le seguenti modifiche:

  • Cambia l'ambito da https://www.googleapis.com/auth/plus.login a profile.

  • Utilizza il metodo gapi.auth2.grantOfflineAccess() con il callback esistente come nell'esempio seguente:

    <!-- Google+ Sign-in (old) -->
    <div class="g-signin"
      data-scope="https://www.googleapis.com/auth/plus.login"
      data-clientid="YOUR_CLIENT_ID"
      data-redirecturi="postmessage"
      data-accesstype="offline"
      data-callback="signInCallback">
    </div>
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init({
      client_id: 'YOUR_CLIENT_ID',
      scope: 'profile'
    });
    
    ...
    
    auth2.grantOfflineAccess().then(signInCallback);
    

Se hai bisogno di accedere anche all'email dell'utente, aggiungi email al parametro di ambito.