在Google Drive SDK上调用showSettingsDialog()会抛出拒绝显示文档,因为X-Frame-Options禁止显示

时间:2012-08-22 21:40:54

标签: google-drive-api

我正在尝试通过Javascript将Google云端硬盘应用中的文件共享给Google Plus。

我按照此页面上的示例代码进行操作:https://developers.google.com/drive/manage-sharing#add_the_dialog_script

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

  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异常12是语法错误,例如财产被错误设定。

Page:http://pierotofy.it/test/

1 个答案:

答案 0 :(得分:1)

你需要确定两件事:

  • 您在Google API控制台中的Google云端硬盘SDK设置中设置的“打开方式”网址必须与您使用共享对话框的网页具有相同的域。
  • 目前,您还需要在Google云端硬盘上安装,才能使嵌入式窗口小部件正常运行。我们目前正在努力消除这一限制,因为我们推出了API的v2并不总是有意义。