繁体   English   中英

Google Drive API,无法通过JS打开标准共享对话框(x-frame-options错误)

[英]Google Drive API, can't open standard sharing dialog via JS (x-frame-options error)

我有一个使用Google Drive API的JavaScript应用。 我在这里阅读了如何打开标准共享对话框: https : //developers.google.com/drive/web/manage-sharing

<head>
...
<script type="text/javascript" src="https://apis.google.com/js/api.js"></script>
<script type="text/javascript">
    init = function() {
        s = new gapi.drive.share.ShareClient('<MY_APP_ID>');
        s.setItemIds(["<MY_FILE_ID>"]);
    }
    window.onload = function() {
        gapi.load('drive-share', init);
    }
</script>
</head>
<body>
    <button onclick="s.showSettingsDialog()">Share</button>
</body>

似乎我没事做,当我单击“ share按钮时,对话框开始加载,但无法加载。

在控制台中,我看到:

Refused to display 'https://drive.google.com/share?...' in a frame
because it set 'X-Frame-Options' to 'SAMEORIGIN'.

我搜索了此错误,发现在SO和其他网站中也存在类似的问题,但它们无济于事。 我猜Google不允许自己出现在非Google网站的框架中(由于“ SAMEORIGIN”)。

如何在我的应用程序中打开共享对话框?

“发射在您的应用程序的谷歌云端硬盘共享对话框”在页面在这里指出:

启动对话框的页面的URL必须与为该应用程序注册的Open URL具有相同的来源。

然后,如果您在此处查看“配置Drive SDK”的说明,则可以看到“打开URL”部分显示为:

对于打开URL,需要牢记两点:

  • 确保为Open URL提供完全限定的域名-本地主机将不起作用。
  • 该URL必须属于您。 应用注册完成后,您需要验证您对该URL的所有权才能创建Chrome Web Store列表。 有关更多信息,请参见站点验证。

因此,您的网页,其中推出的对话框具有相同的原点为打开网址注册在你谷歌硬碟SDK设置的应用程序。 因此,要解决您的问题,请更正开放URL,以使其具有正确的URL,即与开放URL起源相同的URL。 请注意,您可以通过https://console.developers.google.com/project更改Google Drive SDK设置。

还要确保正确设置了“打开URL”。 您还需要将Drive SDK应用ID替换为“ MY_APP_ID”。 您可以按照以下说明找到应用ID:

  1. 转到https://console.developers.google.com
  2. 点击你的项目
  3. 点击左侧的“ API和身份验证”
  4. 点击“ Drive SDK”设置齿轮图标
  5. 然后可以在“ Google Drive SDK”标题下找到“应用ID”,例如应用ID:47XXXXXXXX3

由于此答案,问题得以解决https://stackoverflow.com/a/20742994/1185123

丹曼在回答中说:

客户端ID您可以在Google Cloud Console中找到它-参见上文。 我的是一个12位数字,所以您的数字也可能是12位数字。

我的客户ID看起来像

175564412906-ui22fsaghkvkkj09j2bprku55m8k3d0d.apps.googleusercontent.com

我已经在使用这个ID

s = new gapi.drive.share.ShareClient('<MY_APP_ID>');

阅读答案后,我尝试仅使用客户ID的前12位数字。 我没想到它会起作用,我只是拼命。 但是奇怪的是,它运行良好!

如果有人可以解释它为什么起作用,为什么在文档中什么也没说-欢迎您回答!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM