2015-04-23 9 views
16

sono andato esattamente dalle istruzioni per l'integrazione di accesso Google:TypeError: gapi.auth2 indefinito

https://developers.google.com/identity/sign-in/web/sign-in#specify_your_apps_client_id

opere segno-in, ma di segno-out dà un errore di javascript in linea:

var auth2 = gapi.auth2.getAuthInstance();

l'errore è:

gapi.auth2 undefined

ho includono la piattaforma li google brary as instructed:

<script type='text/javascript' src='https://apis.google.com/js/platform.js' async defer></script> 

Perché non funziona?

+0

Ho un esempio abbastanza minimalista di Google utilizzando l'unità (che richiede anche l'autenticazione) in javascript. L'intero campione è completamente contenuto in una singola pagina html di 170 righe: http://dannyruijters.nl/webtex/googledrive.html Forse questo ti aiuta a risolvere il tuo problema. –

risposta

40

Gli accessi e i signOut sono utilizzati nella stessa pagina? Div g-signin2 carica ed entra in gapi.auth2 quindi dovrebbe funzionare fintanto che sono sulla stessa pagina.

Nel caso in cui signOut si trova in una pagina separata, è necessario caricare manualmente e avviare la libreria gapi.auth2.

esempio completa (si deve sostituire YOUR_CLIENT_ID con il vostro client_id reale):

<html> 
<head> 
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
</head> 
<body> 
    <script> 
    function signOut() { 
     var auth2 = gapi.auth2.getAuthInstance(); 
     auth2.signOut().then(function() { 
     console.log('User signed out.'); 
     }); 
    } 

    function onLoad() { 
     gapi.load('auth2', function() { 
     gapi.auth2.init(); 
     }); 
    } 
    </script> 
    <a href="#" onclick="signOut();">Sign out</a> 

    <script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script> 
</body> 
</html> 
+1

'gapi.load' è documentato ovunque? Non sembra essere parte del materiale di riferimento: https://developers.google.com/identity/sign-in/web/reference –

+0

Stessi sentimenti qui @MicahZoltu. La mia ipotesi è che se hai il tasto '

' sulla tua pagina (che riporta tutti gli esempi di documentazione) l'API verrà caricata per te dal momento che il pulsante lo usa, ma per le istanze in cui non abbiamo il pulsante devi dire ' gapi' object which API (s) da caricare poiché incapsula tutte le API della piattaforma di Google (e probabilmente trova poco saggio caricarle tutte) – Theson

+0

grazie per la soluzione, sono rimasto bloccato per molto tempo – John

Problemi correlati