2014-06-19 46 views
5

Sono in uso Oauth per lo sviluppo per l'estensione chrome e l'utente può accedere tramite l'account Google. Ho un codice jquery come di seguito.Impossibile leggere la proprietà "autorizza" di indefinito in Google Oauth?

Sono anche includere libreria js in file html:

<script src="js/jquery-2.1.1.min.js" type="text/javascript"></script> 

<script src="js/client.js"></script> 

e hanno JS funzione:

function handleAuthClick(event) { 
gapi.auth.authorize({ 
    client_id: clientID, 
    scope: scopes, 
    response_type: 'code token id_token gsession', 
    access_type: accessType, 
    immediate: false 
}, handleAuthResult); 
return false; 
} 

mio problema è: Non riesco ad accedere per conto di Google e spettacolo errore: Uncaught TypeError: Cannot read property 'authorize' of undefined.

: Se sono eseguito come html, posso accedere normalmente, ma non riesco ad accedere quando uso come estensione chrome.

+0

controllare il valore di gapi e gapi.auth –

+0

Si verificano errori di rete durante il caricamento di file JS? – abraham

+1

dove stai includendo questi script ed eseguendo quel codice – kalman

risposta

3

Sembra che gapi.auth non sia ancora inizializzato e il motivo è che non hai seguito la catena di passaggi appropriata per configurarlo prima di effettuare questa chiamata. Quindi sto solo mettendo qui un esempio per voi per vedere se mancano alcuni passaggi durante l'inizializzazione dell'oggetto gapi con successo. Qui va

<script type="text/javascript"> 
    (function(gapi) { 
     gapi.client.setApiKey(apiKey); // your variable for apiKey 
     window.setTimeout(checkAuth,1); 

     function checkAuth() { 
      gapi.auth.authorize({client_id: clientID, scope: scopes, immediate: true}, handleAuthResult); 
     } 

     function handleAuthResult(authResult) { 
      var authorizeButton = document.getElementById('id-of-your-login-button'); 
      if (authResult && !authResult.error) { 
       authorizeButton.style.visibility = 'hidden'; 
       makeApiCall(); 
      } else { 
       authorizeButton.style.visibility = ''; 
       authorizeButton.onclick = handleAuthClick; 
      } 
     } 

     function handleAuthClick(event) { 
      gapi.auth.authorize({ 
       client_id: clientID, 
       scope: scopes, 
       response_type: 'code token id_token gsession', 
       access_type: accessType, 
       immediate: false 
      }, handleAuthResult); 
      return false; 
     } 
    })(gapi); 
</script> 

Puoi tranquillamente mettere questo tag script nel tuo body tag appena sotto il codice html del pulsante.

Problemi correlati