2013-06-07 25 views
5

ho seguito la documentazione di Google per condividere file su unità: Share FilesCondividere file con Google Drive SDK

Se posso caricare un file in Google Drive dall'interfaccia di Google Drive, quindi provare a condividere il file dal mio webapp , ottengo il seguente errore nel mio console javascript:

in cromo:

Refused to display 'https://drive.google.com/share?id=0B6UmN_AivG7SLWVYakF2Rk1CdDg&foreignServi…=postMessage&appId=958414147877&embedOrigin=http%3A%2F%2Fsandbox.velop.org' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 

in Firefox:

[14:04:41.157] Load denied by X-Frame-Options: https://drive.google.com/share?id=0B6UmN_AivG7SLWVYakF2Rk1CdDg&foreignService=explorer&shareService=explorer&shareProtocolVersion=2&command=init&subapp=10&popupWindowsEnabled=true&shareUiType=default&rand=1370585078609&theme=2&client=postMessage&appId=958414147877&embedOrigin=http%3A%2F%2Fsandbox.velop.org does not permit cross-origin framing. 

Ora la cosa strana è che se creo il file dalla mia webapp e lo carichi su Drive attraverso l'API, sono in grado di condividere il file senza problemi.

Ancora più strano, è sufficiente che ho aperto il file volta dall'interno drive (Ho installato il webapp nel mio azionamento in modo da poter aprire i file usando il mio webapp) per essere in grado di condividere, anche se più tardi ho non usare più Drive per aprire il file.

Qualche idea su cosa potrebbe causare questo tipo di comportamento?

Nella mia console Unità SDK, ho impostato l'Open URL: http://sandbox.velop.org/my-google-drive/detail

Quando ho aperto il file in Drive utilizzando il mio webapp, guidare in tal modo mi reindirizza a: http://sandbox.velop.org/my-google-drive/detail?state=%7B%22ids%22:%5B%220B6UmN_AivG7SLWVYakF2Rk1CdDg%22%5D,%22action%22:%22open%22,%22userId%22:%22105908447865504163566%22%7D (in grado di condividere)

Quando apro un file nel mio webapp, l'URL è simile: http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail (in grado di condividere solo se aperta da auto una volta prima)

EDIT:

ho capito che questo è il comportamento standard per Google Drive API come descritto here:

Quando gli utenti approvano questi scopi, l'applicazione è stata installata per l'utente, con l'accesso ai file che l'utente crea o si apre con l'applicazione.

C'è un modo per consentire all'applicazione di aprire/scrivere qualsiasi file?

ho pensato che usare la portata https://www.googleapis.com/auth/drive al momento della registrazione la mia applicazione mi avrebbe permesso di fare questo, ma non sembra essere il caso ..

+0

Qualche fortuna su questo? Sto provando a copiare un file di unità da un utente a un altro e sto avendo un sacco di tempo. – ggwarpig

+0

14 mesi dopo ho gli stessi problemi ... ho mai trovato qualcosa? –

risposta

0

Sono in esecuzione nella esattamente lo stesso problema.

La mia app richiede l'intero ambito dell'unità (quindi l'app deve avere accesso a tutti i file). Ma la condivisione funziona solo se il file è stato precedentemente aperto dall'utente dall'unità. Sembra esserci un po 'di "elenco" dei file che sono stati aperti dal disco.

Quando si accede a un file che non è stato aperto dal disco prima di arrivare ...

Rifiutato di visualizzare HTPS:? //drive.google.com/share id = 0534534543iTEhYamxfUnc2MnM & foreignServi ... ent = postMessage & appId = 46459361793 & embedOrigin = http% 3A% 2F% 2Fwww.editey.com 'in una cornice perché imposta' X-Frame-Options 'su' SAMEORIGIN '.

... che ovviamente è fuorviante in quanto il pulsante di condivisione non è in una cornice.

apertura l'url dare in una nuova scheda del browser dà un suggerimento al vero root-cause: Application '3.453.459,361793 millions' non è autorizzato ad accedere al documento "0B0o5345345DAc_SiTEhYamxfUnc2MnM".

La mia app dovrebbe avere accesso al documento ma sembra che la "finestra di dialogo condivisa" agisca come un'app separata che consentirà solo l'accesso ai file che sono stati precedentemente aperti dal disco.

0

Per motivi di sicurezza, l'unità non consente di utilizzare tale finestra di dialogo, a meno che non si sia nell'URL specificato dal proprio "URL aperto".

Il tuo attuale URL http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail! = http://sandbox.velop.org/my-google-drive/detail

così si potrebbe desiderare di cambiare la vostra struttura degli URL. Forse qualcosa come http://sandbox.velop.org/my-google-drive/detail?open=B6UmN_AivG7SLWVYakF2Rk1CdDg

Questo è un vero dolore al collo, soprattutto quando si sviluppa su un dominio diverso.

+0

Strano abbastanza, ma il problema si verifica anche quando l'URL è esattamente giusto. La finestra di dialogo condivisa inizia immediatamente a funzionare (senza ricaricare la pagina), anche se apro il file in un browser completamente diverso. – dflorey

Problemi correlati