我一直在关注Google的文档,以便在云端硬盘上分享文件:Share Files
如果我从Google云端硬盘界面将文件上传到Google云端硬盘,然后尝试从我的网络应用程序共享此文件,我的javascript控制台中出现以下错误:
chrome中的:
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'.
在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.
现在奇怪的是,如果我从我的webapp创建文件并通过api上传到Drive,我可以毫无问题地共享该文件。
更奇怪的是,只需从云端硬盘中打开文件一次就足够了(我已在我的云端硬盘中安装了网络应用程序,以便我可以使用我的网络应用程序打开文件)以便能够共享它,即使以后我不再使用Drive打开文件了。
知道可能导致这种行为的原因是什么?
在我的Drive SDK控制台中,我将开放网址设置为: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
(能够共享)
当我在我的网络应用程序中打开文件时,URL就像:http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail
(只有在之前从驱动器打开过才能共享)
修改
我意识到这是Google Drive API的标准行为,如here所述:
当用户批准这些范围时,会为该用户安装该应用程序,并可访问用户创建或使用该应用程序打开的文件。
有没有办法让应用程序打开/写入任何文件?
我认为在注册我的应用时使用https://www.googleapis.com/auth/drive
范围可以让我这样做,但似乎并非如此......
答案 0 :(得分:0)
我遇到了完全相同的问题。
我的应用正在请求完整的驱动器范围(因此应用应该可以访问所有文件)。 但共享仅在用户之前已从驱动器中打开文件时才有效。 似乎有一些神奇的“在列表中”已经从驱动器打开的文件。
在我获得之前访问尚未从驱动器打开的文件时...
拒绝在相框中显示htps://drive.google.com/share?id = 0534534543iTEhYamxfUnc2MnM& foreignServi ... ent = postMessage& appId = 46459361793& embedOrigin = http%3A%2F%2Fwww.editey.com'它将'X-Frame-Options'设置为'SAMEORIGIN'。
...由于分享按钮不在一个框架中,这显然会产生误导。
在新的浏览器选项卡中打开给定网址,提示真正的根本原因: 申请'3453459361793'无权访问“0B0o5345345DAc_SiTEhYamxfUnc2MnM”文件。
我的应用应该可以访问该文档,但看起来“共享对话框”就像一个单独的应用程序,只允许访问从驱动器预先打开过的文件。
答案 1 :(得分:0)
出于安全原因,驱动器不允许您使用该对话框,除非您位于“打开网址”指定的URL。
您当前的网址http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail
!= http://sandbox.velop.org/my-google-drive/detail
因此,您可能希望更改网址结构。也许像http://sandbox.velop.org/my-google-drive/detail?open=B6UmN_AivG7SLWVYakF2Rk1CdDg
这是真正的痛苦,尤其是在不同领域发展时。