我有一个使用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和其他网站上有一些类似的问题,但它们没有帮助。我猜谷歌不允许自己在非谷歌网站的框架中(“SAMEORIGIN”的原因)。
如何在我的应用中打开共享对话框?
答案 0 :(得分:4)
&#34;在您的应用中启动Google云端硬盘共享对话框&#34;第here页:
启动对话框的网页的网址必须具有相同的来源 作为为应用注册的开放URL。
然后,如果您查看指示&#34;配置Drive SDK&#34; here,您可以看到&#34;打开网址&#34;部分内容如下:
开放网址需要记住两件重要的事情:
- 确保为Open URL提供完全合格的域名 - localhost无法正常工作。
- 网址必须属于您。应用注册完成后,您需要验证您对此网址的所有权才能创建 Chrome网上应用店列表。有关详细信息,请参阅网站验证。
因此,启动对话框的页面 不 与您在Google Drive SDK设置中为应用注册的Open URL具有相同的来源。因此,要解决您的问题,请更正打开的URL,使其具有正确的URL,即与Open URL具有相同来源的URL。请注意,您可以通过https://console.developers.google.com/project更改Google云端硬盘SDK设置。
同时确保正确设置Open URL。您还需要将Drive SDK应用ID替换为“MY_APP_ID&#39;”。您可以按照以下说明找到应用ID:
答案 1 :(得分:1)
由于这个答案https://stackoverflow.com/a/20742994/1185123
,问题解决了dan-man 在他的回答中说:
客户端ID 您可以在Google Cloud Console中找到它 - 请参阅上文。 我的数字是12位数,所以你的数字可能也是。
我的客户端ID看起来像
175564412906-ui22fsaghkvkkj09j2bprku55m8k3d0d.apps.googleusercontent.com
我在
中使用了此IDs = new gapi.drive.share.ShareClient('<MY_APP_ID>');
在阅读答案后,我尝试仅使用我的客户端ID的前12位数字。我没想到它会起作用,我只是绝望。但奇怪的是,它完美无缺!
如果有人可以解释为什么它有效,为什么文档中没有说明这一点 - 欢迎您回答!