Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与Google Drive SDK共享文件_Javascript_Google Drive Api_Google Api Js Client - Fatal编程技术网

Javascript 与Google Drive SDK共享文件

Javascript 与Google Drive SDK共享文件,javascript,google-drive-api,google-api-js-client,Javascript,Google Drive Api,Google Api Js Client,我一直遵循谷歌的文档在硬盘上共享文件: 如果我从Google Drive界面上传一个文件到Google Drive,然后尝试从我的webapp共享该文件,我的javascript控制台会出现以下错误: 镀铬: Refused to display 'https://drive.google.com/share?id=0B6UmN_AivG7SLWVYakF2Rk1CdDg&foreignServi…=postMessage&appId=958414147877&embed

我一直遵循谷歌的文档在硬盘上共享文件:

如果我从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'. 
在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,我就可以毫无问题地共享文件

更奇怪的是,我从驱动器中打开文件一次就足够了(我已经在驱动器中安装了webapp,所以我可以使用webapp打开文件),这样就可以共享它,即使以后我不再使用驱动器打开文件

知道是什么导致了这种行为吗

在我的驱动器SDK控制台中,我将打开的URL设置为:
http://sandbox.velop.org/my-google-drive/detail

当我使用webapp在驱动器中打开文件时,驱动器会将我重定向到:
http://sandbox.velop.org/my-google-drive/detail?state=%7B%22ids%22:%5B%220B6UmN_AivG7SLWVYakF2Rk1CdDg%22%5D,%22操作%22:%22打开%22,%22用户ID%22:%22105908447865504163566%22%7D
(能够共享)

当我在我的webapp中打开一个文件时,URL如下:
http://sandbox.velop.org/my-google-drive/0B6UmN_AivG7SLWVYakF2Rk1CdDg/detail
(仅在以前从驱动器打开一次时才能共享)

编辑:

我意识到这是Google Drive API的标准行为,如下所述:

当用户批准这些作用域时,将为用户安装应用程序,并可以访问用户使用应用程序创建或打开的文件

是否有方法允许应用程序打开/写入任何文件


我认为使用
https://www.googleapis.com/auth/drive
scope在注册我的应用程序时允许我这样做,但事实似乎并非如此。

我遇到了完全相同的问题

我的应用程序正在请求全驱动器范围(因此应用程序应该可以访问所有文件)。 但是,只有在用户以前从驱动器打开文件时,共享才起作用。 从驱动器中打开的文件“同时列出”似乎有一些魔力

当访问一个在我得到之前还没有从驱动器打开的文件时

拒绝展示htps://drive.google.com/share?id=0534534543iTEhYamxfUnc2MnM&foreignServi…ent=postMessage&appId=46459361793&embedoorigin=http%3A%2F%2Fwww.editey.com'在一个帧中,因为它将“X-frame-Options”设置为“SAMEORIGIN”

…这显然是误导,因为共享按钮不在框架中

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


“我的应用程序”应该可以访问该文档,但“共享对话框”似乎是一个单独的应用程序,只允许访问以前从驱动器打开的文件。

出于安全原因,除非您位于“打开的URL”中指定的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


这真是令人头疼,尤其是在另一个领域开发时。

这方面运气好吗?我正试图将一个驱动器文件从一个用户复制到另一个用户,这让我非常痛苦。14个月后,我遇到了同样的问题。。。找到什么了吗?很奇怪,但当URL完全正确时,问题也会出现。共享对话框立即开始工作(无需重新加载页面),即使我在完全不同的浏览器中打开文件。