![](/img/trans.png)
[英]Google Drive SDK JavaScript file sharing dialog gives “Refused to display document because display forbidden by 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:
由于此答案,问题得以解决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.