我一直在关注 Google 的文档以在云端硬盘上共享文件:共享文件
如果我从 Google Drive 界面将文件上传到 Google Drive,然后尝试从我的 webapp 共享此文件,我在我的 javascript 控制台中收到以下错误:
在铬:
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'.
在火狐中:
[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.
现在奇怪的是,如果我从我的 web 应用程序创建文件并通过 api 上传到 Drive,我可以毫无问题地共享文件。
更奇怪的是,我从云端硬盘中打开一次文件就足够了(我已经在云端硬盘中安装了 web 应用程序,因此我可以使用我的 web 应用程序打开文件)以便能够共享它,即使以后我不使用云端硬盘来再打开文件。
知道什么可能导致这种行为吗?
在我的 Drive SDK 控制台中,我将打开 URL 设置为:http://sandbox.velop.org/my-google-drive/detail
当我使用我的网络应用在云端硬盘中打开文件时,云端硬盘会将我重定向到:(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
能够共享)
当我在我的 web 应用程序中打开一个文件时,URL 是这样的:(http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail
只有以前从驱动器打开一次才能共享)
编辑:
我意识到这是 Google Drive API 的标准行为,如下所述:
当用户批准这些范围时,将为用户安装应用程序,并可以访问用户使用应用程序创建或打开的文件。
有没有办法让应用程序打开/写入任何文件?
我认为https://www.googleapis.com/auth/drive
在注册我的应用程序时使用范围可以让我这样做,但似乎并非如此..