Passaggi per ridurre al minimo l'impatto delle modifiche all'ambito sugli utenti
- Se la tua applicazione richiede l'indirizzo email di un utente autenticato e in precedenza hai utilizzato
profile.emails.read
per questo scopo, utilizzaemail
. - Ottieni l'approvazione di
profile.emails.read
con una richiesta di verifica approvata. Consulta l'articolo Come faccio a richiedere la verifica? - Revoca il token utente precedente per l'ambito da rimuovere o rimuovi completamente l'accesso all'applicazione. Ad esempio, un token con accesso
profile.emails.read
deve essere revocato. Ti consigliamo di applicare la revoca mentre gli utenti sono nella tua applicazione in modo da poter ottenere immediatamente il loro consenso. - Chiedi agli utenti di dare nuovamente il consenso con il nuovo ambito, ad esempio
email
, senzaprofile.emails.read
. - Rimuovi l'ambito che verrà ritirato dalla configurazione della schermata di consenso OAuth delle API Google.
Le modifiche che devi apportare per eseguire la migrazione del tuo sito dall'Accesso a Google+ ad Accedi con Google dipendono dal flusso di Accesso a Google+ che utilizzi. In genere, la migrazione richiede di aggiornare il pulsante di accesso, gli ambiti richiesti e le istruzioni su come recuperare le informazioni del profilo da Google.
Quando aggiorni il pulsante di accesso, non fare riferimento a G+ o utilizzare il colore rosso. Rispetta le nostre aggiornate 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
. Devi rimappare
gli ambiti come segue:
Ambito precedente | Nuovo ambito |
---|---|
plus.login |
profile |
plus.me |
openid |
plus.profile.emails.read |
email |
Molti implementatori di Accedi con Google+ hanno utilizzato il
flusso di codice. Ciò significa che le app per Android, iOS o JavaScript ottengono un codice OAuth da Google e il client lo invia nuovamente al server, insieme alla protezione contro la falsificazione delle richieste cross-site. Il server convalida quindi il codice e ottiene i token di aggiornamento e di accesso per estrarre le informazioni del profilo utente dall'API people.get
.
Ora Google consiglia di richiedere un token ID e di inviarlo dal client al server. I token ID dispongono di protezioni integrate contro la contraffazione tra siti e possono anche essere verificati in modo statico sul tuo server, il che evita una chiamata API aggiuntiva per recuperare le 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 le informazioni del profilo, puoi farlo. Una volta che il tuo server dispone di un token di accesso, devi ottenere le informazioni del profilo dell'utente dagli endpoint userinfo
specificati nel nostro documento Discovery per l'accesso. La risposta dell'API è formattata in modo diverso rispetto alla risposta del profilo Google+, pertanto devi aggiornare l'analisi al nuovo formato.
Eseguire la migrazione di un pulsante di accesso HTML
Se hai incluso un pulsante di accesso a Google+ nella tua pagina assegnando il corsog-signin
a un elemento, apporta le seguenti modifiche:
Quando specifichi l'ID cliente, in un tag
<meta>
, in un attributodata-
o in un oggetto parameters, modifica la stringaclientid
inclient_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 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 gestori di successo e errore, 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 su
profile email openid
. Puoi ottenere le informazioni di base del profilo dell'utente, come nome, indirizzo email e URL della foto, nel seguente modo:// 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 visualizzato dinamicamente
Se hai incluso un pulsante di accesso a Google+ nella tua pagina chiamando
gapi.signin.render()
, apporta le seguenti modifiche:
Quando specifichi l'ID cliente, in un tag
<meta>
, in un attributodata-
o in un oggetto parameters, modifica la stringaclientid
inclient_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">
Mostra il pulsante di accesso con
gapi.signin2.render()
anziché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 gestori di successo e errore, 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 su profile email openid
. Puoi
ottenere le informazioni di base sul 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 a gapi.auth.signIn()
quando gli utenti fanno clic sul pulsante di accesso, apporta le seguenti modifiche:
Quando specifichi l'ID cliente, in un tag
<meta>
, in un attributodata-
o in un oggetto parameters, cambia la stringaclientid
inclient_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">
Utilizza
gapi.auth2.attachClickHandler()
per avviare il flusso di accesso quando viene premuto 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 gestori di successo e errore, 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 su profile email openid
. Puoi
ottenere le informazioni di base sul profilo dell'utente tramite una chiamata al metodo 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 trasmettere al server, apporta le seguenti modifiche:
Modifica l'ambito da
https://www.googleapis.com/auth/plus.login
aprofile
.Utilizza il metodo
gapi.auth2.grantOfflineAccess()
con la funzione 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 devi anche accedere all'email dell'utente, aggiungi email
al parametro ambito.