5

我有一个使用 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”)。

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

4

2 回答 2

4

“在您的应用中启动 Google 云端硬盘共享对话框”页面说明

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

如果您在此处查看“配置 Drive SDK”的说明您会看到“打开 URL”部分显示为:

开放 URL 有两点需要牢记:

  • 确保为 Open URL 提供完全限定的域名—— localhost 不起作用。
  • 该 URL 必须属于您。应用注册完成后,您需要验证您对该 URL 的所有权,才能创建 Chrome 网上应用店列表。有关详细信息,请参阅站点验证。

因此,您正在启动对话框的页面与在 Google Drive SDK 设置中为应用程序注册的打开 URL 的来源不同。因此,要解决您的问题,请更正 Open URL,使其具有正确的 URL,即与 Open URL 具有相同来源的 URL。请注意,您可以通过https://console.developers.google.com/project更改 Google Drive SDK 设置。

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

  1. 转到https://console.developers.google.com
  2. 点击您的项目
  3. 点击左侧的“APIs and auth”
  4. 单击“Drive SDK”设置齿轮图标
  5. 然后可以在“Google Drive SDK”标题下找到“App ID”,例如 App ID:47XXXXXXXX3
于 2014-03-17T00:12:46.293 回答
1

由于这个答案https://stackoverflow.com/a/20742994/1185123 ,问题得到了解决

dan-man在他的回答中说:

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

我的客户 ID 看起来像

175564412906-ui22fsaghkvkkj09j2bprku55m8k3d0d.apps.googleusercontent.com

我用过这个 id

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

阅读答案后,我尝试仅使用客户 ID 的前 12 位数字。我没想到它会起作用,我只是绝望了。但奇怪的是,它完美地工作!

如果有人可以解释它为什么起作用以及为什么文档中没有说明这一点 - 欢迎您回答!

于 2014-03-18T07:06:31.727 回答