15

Sto tentando di utilizzare Google Sign-in per siti Web (https://developers.google.com/identity/sign-in/web/) e ho notato che la mia soluzione non funziona in Internet Explorer 11. Per provare ad eliminare il maggior numero possibile fattori possibili, ho creato un semplice caso di test basato sul codice di esempio fornito da Google.Codice di accesso di Google di base per siti Web che non funziona in Internet Explorer 11

L'ho provato su Chrome sul mio PC Windows 7, Chrome sul mio Mac, Safari sul mio Mac, Firefox sul mio Mac e Safari sul mio iPhone. Funziona su tutti questi elementi (ad es., Quando faccio clic sul pulsante Accedi e selezioni/immetti il ​​mio account Google, ritorna alla pagina e il pulsante dice "Accesso").

Tuttavia, non funziona su Internet Explorer 11 su PC o, stranamente, su Chrome per iOS. Quando si fa clic sul pulsante, viene visualizzata una finestra che consente di selezionare il mio account Google, ma dopo aver effettuato una selezione, la finestra si chiude e torna alla pagina con un pulsante che dice ancora "Accedi".

Ecco il codice di esempio:

<html> 
<head> 
<meta name="google-signin-client_id" content="61023618497-vqfbod57f26ncjl9d6firk3t09ve4tt3.apps.googleusercontent.com"> 
<script src="https://apis.google.com/js/platform.js" async defer></script> 
</head> 
<body> 
<div class="g-signin2"></div> 
</body> 
</html> 

Tutte le idee su quello che potrebbe essere in corso? Ho cercato in giro e non ho trovato alcuna soluzione.

Un'idea era aggiungere "accounts.google.com" ai siti attendibili di IE. Questo non ha funzionato. Ho anche provato ad accedere alla pagina tramite https anziché http. Neanche questo ha fatto la differenza. Qualcos'altro dovrei provare?

+2

Abbiamo bisogno di Google per risolvere questo problema. Qualcuno sa come aprire un problema con loro? Ho aggiornato i tag su questa domanda e un altro (http://stackoverflow.com/questions/31494204/google-sign-in-for-web-apps-not-working-with-internet-explorer) a entrambi quelli che hanno consiglia (https://groups.google.com/forum/#!topic/google-federated-login-api/TL9Pxn_s7yw) – gerry3

+0

Questo problema è stato risolto in un recente aggiornamento a Google Sign-in (19 novembre 2015). Le pagine che hai fatto riferimento ora dovrebbero funzionare in IE11/Edge. – class

+1

Sto votando per chiudere questa domanda come off-topic perché si trattava di un bug su Google che è stato risolto. – j08691

risposta

1

Assicurarsi di non disporre di IE 11 configurato per bloccare tutti i cookie di terze parti.

I cookie di terze parti sono obbligatori e l'esperienza utente che si verifica quando i cookie di terze parti vengono bloccati, come hai scoperto, lascia molto a desiderare. Non ci sono avvisi o messaggi di errore presentati all'utente.

Si potrebbe provare a catturare l'errore prima che accada. È possibile rilevare se i cookie di terze parti vengono bloccati o meno tentando di impostare un cookie su un secondo dominio (che controlli) e quindi facendo una seconda richiesta per garantire che il cookie sia impostato. Avrai bisogno di uno script o qualcosa sul tuo server che possa impostare e controllare il cookie (non può essere fatto usando solo JavaScript a causa del modello di sicurezza del browser).

+2

Questo non è il problema, almeno quello che sto vedendo. Ricevo l'errore "SCRIPT5: accesso negato" nella console di IE e fa riferimento a un iframe di Google. La modifica di IE per consentire tutti i cookie (impostazioni di protezione bassa) non ha alcun effetto. L'aggiunta del sito di servizio, di accounts.google.com, ecc. Ai siti attendibili non ha alcun effetto. – razor

3

Mi sono imbattuto nello stesso problema ora, pochi mesi dopo.

Se guardate:

https://developers.google.com/identity/sign-in/web/build-button

e provare un signin con il loro pulsante di demo, non funziona con IE11 (ma funziona con altri browser che sto usando al sistema operativo diverso). Non sono riuscito a trovare alcuna soluzione.

Sto lasciando il commento per un futuro lettore, che cerca lo stesso problema in futuro. Se il pulsante Demo di Google non funziona, può almeno essere certo che il problema non è probabilmente nel suo codice. :)

1

Ho avuto successo nel fare quanto segue: Caricamento dello script per avviare il rendering dei pulsanti di Google ecc. Da $ document.ready. (Ad esempio, che hai in apis.google.com/js/client:platform.js?onload= x)

ad es.

<script src="https://apis.google.com/js/client:platform.js?onload=startApp" async defer></script> 

Sposta startApp() per qui:

$(document).ready(function() { 
    startApp(); 

Dove startApp() simile a questa:

function startApp() { 
    gapi.load('auth2', function() { 
     gapi.client.load('plus', 'v1').then(function() { 
      gapi.signin2.render('signin-button', { 
       scope: 'https://www.googleapis.com/auth/plus.login', 
       fetch_basic_profile: false 
      }); 
      gapi.auth2.init({ 
       fetch_basic_profile: false, 
       scope: 'https://www.googleapis.com/auth/plus.login' 
      }).then(
       function() { 
        console.log('init'); 
        auth2 = gapi.auth2.getAuthInstance(); 
        auth2.isSignedIn.listen(updateSignIn); 
        auth2.then(updateSignIn()); 
       }); 
     }); 
    }); 
} 
0

ho lottato per ottenere l'esempio di lavorare su localhost, ma come appena l'ho distribuito al vero URL, ha funzionato.