【问题标题】:Calling showSettingsDialog() on the Google Drive SDK throws a Refused to display document because display forbidden by X-Frame-Options在 Google Drive SDK 上调用 showSettingsDialog() 会引发拒绝显示文档,因为 X-Frame-Options 禁止显示
【发布时间】:2012-08-22 21:40:54
【问题描述】:

我正在尝试通过 Javascript 将我的 Google Drive 应用程序中的文件共享到 Google Plus。

我按照这个页面上的示例代码:https://developers.google.com/drive/manage-sharing#add_the_dialog_script

我将我的应用程序注册到 Google Drive SDK,我使用网站管理员工具验证了我的应用程序的 URL(不确定是否有必要,但以防万一)并在页面加载后放置此代码:

  var clientId = 'GOOGLE DRIVE SDK CLIENT ID';
  var apiKey = 'MY API KEY';

  var scopes = ['https://www.googleapis.com/auth/drive.readonly'];

  var access_token = ''; // Set after access is granted

  var share_client; // Set after access is grated

  function handleClientLoad() {
    gapi.client.setApiKey(apiKey);
    window.setTimeout(checkAuth,1);
  }

  function checkAuth() {
    gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
  }

  function handleAuthResult(authResult) {
    if (authResult && !authResult.error) {
      init = function() {
          share_client = new gapi.drive.share.ShareClient('756276963659');
      }
      gapi.load('drive-share', init);
    } else {
        console.log("error"); 
    }
  }

  function handleAuthClick(event) {
    gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthResult);
  }

一个按钮调用handleAuthClick,而handleClientLoad在页面加载时被调用:

  <script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script> 

然后分享一个项目:

  if (isShareEnabled()){
    share_client.setItemIds([image.fileID]);
    share_client.showSettingsDialog();
  }

这时会出现一个窗口,其中显示文本“正在加载...”,并且旋转图标会在屏幕上停留几秒钟,然后会出现警告消息“抱歉,此时无法共享。请稍后再试。”出现。

通过查看 Javascript 控制台:

Uncaught Error: SYNTAX_ERR: DOM Exception 12 2956664786-v2-doclist_share.js:453
Refused to display document because display forbidden by X-Frame-Options.

在 Chrome 21 和 Firefox 14 上测试,同样的问题。

这只是暂时的问题还是我做错了什么?

编辑:我还尝试将我的客户端 ID 用于 Web 应用程序,而不是使用 Google Drive SDK 的客户端 ID,结果相同。

edit2:“拒绝显示文档,因为 X-Frame-Options 禁止显示”似乎更像是一个警告,而“未捕获的错误:SYNTAX_ERR:DOM 异常 12 2956664786-v2-doclist_share.js:453”停止执行. DOM Exception 12 是一个语法错误,例如属性设置错误。

页面:http://pierotofy.it/test/

【问题讨论】:

    标签: google-drive-api


    【解决方案1】:

    你需要确保两件事:

    • 您在 Google API 控制台的 Google Drive SDK 设置中设置的“打开方式”网址必须与您使用共享对话框的页面具有相同的域。
    • 目前,您还需要将您的应用程序安装到您的 Google Drive 上,这样可嵌入的小部件才能工作。我们目前正在努力消除此限制,因为自从我们推出 API v2 以来,它并不总是有意义。

    【讨论】:

    • 我仔细检查了 Open URL 字段,它与页面运行的 URL 相同。
    • 这个网上有我可以看的地方吗?
    • 嗯,我没有看到您的代码有问题,您可以尝试将打开方式 URL 设置为与您的网站相同吗 (pierotofy.it/test) 您还可以设置您的 OAuth 2(在 API 下API 控制台中的访问)重定向 URI 是否相同?
    • 试过了,好像没用。正如我在我的一次编辑中指出的那样,在 gapi.load('drive-share', init); 期间加载的 javascript 代码似乎确实如此。包含错误并导致执行停止。是否有运行在 Google 网站上的示例可供我查看?
    • OK 实际上是的,我们还使用了我们提供的示例应用程序上的功能,称为 DrEdit。不过部署需要一段时间。我已经部署了它,但共享对话框实际上并不能正常工作。所以我认为我们可能对此有错误(或中断)。我正在让我们的工程团队知道,我会在收到回复时通知您!很抱歉!
    猜你喜欢
    • 2012-03-18
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2012-04-09
    • 2013-03-12
    • 2012-02-24
    相关资源
    最近更新 更多