Passaggi per ridurre al minimo l'impatto delle modifiche dell'ambito sugli utenti
- Se la tua applicazione richiede l'indirizzo email di un utente autenticato e in precedenza hai utilizzato
profile.emails.read
a questo scopo, utilizza inveceemail
. - Ottieni l'approvazione per
profile.emails.read
con una richiesta di verifica approvata. Consulta la sezione Come posso richiedere la verifica? - Revoca il token utente precedente all'ambito da rimuovere oppure rimuovi completamente l'accesso all'applicazione. Ad esempio, un token con accesso a
profile.emails.read
dovrebbe essere revocato. Ti consigliamo di applicare la revoca mentre gli utenti sono nell'applicazione, in modo da poter ottenere immediatamente il consenso degli utenti. - Chiedi agli utenti di dare nuovamente il consenso con il nuovo ambito, ad esempio
email
, senzaprofile.emails.read
. - Rimuovi l'ambito che verrà eliminato gradualmente dalla configurazione della schermata per il consenso OAuth delle API di Google.
Le modifiche da apportare per eseguire la migrazione del tuo sito dall'Accesso a Google+ ad Accedi con Google dipendono dal flusso di accesso a Google+ utilizzato. 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. Rispetta le nostre linee guida per il branding aggiornate.
La maggior parte delle applicazioni di accesso a G+ richiede una combinazione di 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 utenti che implementano l'accesso a Google+ utilizzavano il flusso del codice. Ciò significa che le app per Android, iOS o JavaScript ricevono un codice OAuth da Google e il client restituisce quel codice al server, insieme alla protezione da falsificazione delle richieste tra siti. Il server convalida quindi il codice e ottiene i token di aggiornamento e accesso per estrarre le informazioni del profilo utente dall'API people.get
.
Google ora consiglia di richiedere un token ID e inviarlo dal client al server. I token ID hanno protezioni contro la contraffazione integrate tra siti e possono anche essere verificati in modo statico sul tuo server, evitando una chiamata API aggiuntiva per ottenere 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 utente dagli endpoint userinfo
specificati nel nostro documento di rilevamento dell'accesso. Il formato della risposta dell'API è diverso rispetto alla risposta del profilo Google+, pertanto devi aggiornare l'analisi in base al nuovo formato.
Pulsante Esegui la migrazione di un codice HTML
Se hai incluso nella tua pagina un pulsante Accesso a Google+ assegnando la classe g-signin
a un elemento, apporta le seguenti modifiche:
Quando specifichi il tuo ID cliente in un tag
<meta>
, in un attributodata-
o in un oggetto parametri, 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 pulsante di accesso anzichég-signin
. Inoltre, specifica callback di successo ed errore separati invece di 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 operazione riuscita e di 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 in
profile email openid
. Puoi ottenere le informazioni di base del profilo dell'utente, come nome, email e URL dell'immagine della foto, come segue:// 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 sottoposto a rendering dinamico
Se hai incluso nella tua pagina un pulsante Accesso a Google+ chiamando
gapi.signin.render()
, apporta le seguenti modifiche:
Quando specifichi il tuo ID cliente in un tag
<meta>
, in un attributodata-
o in un oggetto parametri, 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">
Visualizza 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 i gestori di operazione riuscita e di 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 in profile email openid
. Puoi
recuperare 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 a gapi.auth.signIn()
quando gli utenti fanno clic sul pulsante di accesso, apporta le seguenti modifiche:
Quando specifichi il tuo ID cliente in un tag
<meta>
, in un attributodata-
o in un oggetto parametri, 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">
Usa
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 i gestori di operazione riuscita e di 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 in profile email openid
. Puoi
recuperare le informazioni di base del profilo dell'utente tramite una chiamata al
metodo getBasicProfile()
.
Migrazione di un flusso lato server ibrido
Se hai utilizzato l'API JavaScript per acquisire un codice di autorizzazione una tantum da passare al tuo server, apporta le seguenti modifiche:
Cambia l'ambito da
https://www.googleapis.com/auth/plus.login
aprofile
.Utilizza il metodo
gapi.auth2.grantOfflineAccess()
con la funzione di 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.