2015-12-29 15 views
9

Viene visualizzato un errore durante l'accesso a Google Drive Picker, tuttavia il selettore viene visualizzato correttamente senza errori.Errore di selezione unità Google

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://docs.google.com') does not match the recipient window's origin ('http://localhost'). 

Invalid 'X-Frame-Options' header encountered when loading 'https://docs.google.com/picker?protocol=gadgets&origin=http%3A%2F%2Flocalho…%3Atrue%7D))&rpctoken=e2x1eop3h1rr&rpcService=2qeo0ns6gu13&thirdParty=true': 'ALLOW-FROM http://localhost' is not a recognized directive. The header will be ignored. 

PSB lo screenshot dal mio console sviluppatore

http://screencloud.net/v/6431

Inoltre ho fatto riferimento a questa domanda Google Drive Picker - Developer Key is Invalid Error ma penso che ci sono stati alcuni cambiamenti nelle API di Google quindi questa cosa non funziona.

Codice frammento -

var picker = new google.picker.PickerBuilder() 
          .setLocale(lkGoogleSettings.locale) 
          .setOAuthToken(accessToken) 
          .setCallback(pickerResponse) 
          .setOrigin(lkGoogleSettings.origin); 

Grazie

+0

'http: // localhost 'non è una direttiva riconosciuta'. Forse l'API di Google si aspetta un numero di porta, come in 'http: // localhost: 80'? – remdevtec

+3

FWIW questo accade solo in Chrome. Il 2 ° problema è segnalato come un bug che non prevedono di risolvere. https://code.google.com/p/chromium/issues/detail?id=511521 – Amber

+0

Penso che il selettore di file di Google funzioni solo sul server live, è necessario ospitarlo –

risposta

2

Come alcuni dei commentatori hanno detto, l'errore X-Frame-Option è noto bug in Chrome. Puoi vedere una lunga discussione a riguardo here.

Ora, per il vero problema: origin matching. Google Drive non funziona correttamente con localhost, con o senza porta, indipendentemente dal fatto che tu lo aggiunga alle tue origini nelle tue autorizzazioni per il tuo ID cliente.

C'è, tuttavia, la speranza. Se si imposta un dominio nel file host in modo che punti a localhost, è possibile aggiungere il dominio all'origine nella console di Google App e tutto funziona come previsto!

Lo faccio sempre per testare le mie applicazioni. Per esempio:

  1. aggiungere dev.mysite.com ai vostri hostfile (/ etc/hosts in Mac).
  2. Replica il dominio nelle autorizzazioni per l'app di selezione nel Google App Console e dovresti essere pronto.
  3. Avvia il tuo sito utilizzando dev.mysite.com:80 * e Drive Picker dovrebbe ora funzionare correttamente.

* Nota: si deve servire sulla porta 80. Google non gioca sempre pulito con le porte a tutti, in modo che quando si va al tuo sito, l'indirizzo deve essere dev.mysite.com con nessuna porta.

+0

Qualche motivo per il voto negativo? Non credo che una modifica estetica dovrebbe essere sufficiente per votare una risposta corretta con una soluzione reale. – silverelizard