5

我一直在关注 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在注册我的应用程序时使用范围可以让我这样做,但似乎并非如此..

4

2 回答 2

0

出于安全原因,除非您位于“打开 URL”中指定的 URL,否则驱动器不会让您使用该对话框。

您当前的网址http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail!=http://sandbox.velop.org/my-google-drive/detail

所以你可能想改变你的 URL 结构。也许像http://sandbox.velop.org/my-google-drive/detail?open=B6UmN_AivG7SLWVYakF2Rk1CdDg

这是真正的痛苦,尤其是在不同领域开发时。

于 2013-09-15T13:00:01.793 回答
0

我遇到了完全相同的问题。

我的应用程序正在请求完整的驱动器范围(因此该应用程序应该可以访问所有文件)。但只有当用户之前从驱动器打开文件时,共享才有效。从驱动器打开的文件似乎有一些神奇的“同时列出”。

在访问之前未从驱动器打开的文件时...

拒绝在框架中显示 htps://drive.google.com/share?id=0534534543iTEhYamxfUnc2MnM&foreignServi…ent=postMessage&appId=46459361793&embedOrigin=http%3A%2F%2Fwww.editey.com' 因为它设置了“X-Frame-Options”到“同源”。

...这显然具有误导性,因为共享按钮不在框架中。

在新的浏览器选项卡中打开给出的 URL 会提示真正的根本原因:应用程序“3453459361793”无权访问文档“0B0o5345345DAc_SiTEhYamxfUnc2MnM”。

我的应用程序应该可以访问该文档,但它看起来好像“共享对话框”充当一个单独的应用程序,只允许访问预先从驱动器打开的文件。

于 2013-09-15T11:37:06.000 回答