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

imk*_*ost 5 javascript same-origin-policy x-frame-options google-drive-api

我有一个使用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>
Run Code Online (Sandbox Code Playgroud)

好像我做的一切都正确,当我点击我的share按钮时,对话框开始加载但无法加载.

在控制台中我看到:

Refused to display 'https://drive.google.com/share?...' in a frame
because it set 'X-Frame-Options' to 'SAMEORIGIN'.
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了这个错误,我已经看到在SO和其他网站上有一些类似的问题,但它们没有帮助.我猜谷歌不允许自己在非谷歌网站的框架中("SAMEORIGIN"的原因).

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

Ben*_*ith 4

“在您的应用程序中启动 Google Drive 共享对话框”页面指出

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

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

对于 Open URL,需要记住两件重要的事情:

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

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

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

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