18

使用 Google Drive API 在 Javascript 应用程序中打开共享对话框时出现 JS 错误。错误是:未捕获的错误:语法错误:DOM 异常 12。

但是,当我退出所有 Google 帐户然后只登录一个帐户时,共享对话框可以正常工作。一旦我在新选项卡中登录第二个帐户,共享对话框就不再起作用并因上述错误而失败。

这与在 Google Drive SDK 上调用 showSettingsDialog() 会抛出 Refused to display document 因为 X-Frame-Options 禁止显示非常相似。但是,我已经完成了接受响应中显示的调试,但无济于事,即:

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

相关代码为:

var shareClient = new gapi.drive.share.ShareClient(rtpg.realTimeOptions.appId);
shareClient.setItemIds([rtclient.params['fileId']]);
shareClient.showSettingsDialog();

有什么方法可以让登录的多个帐户正常工作吗?

4

2 回答 2

4

您可能需要仔细阅读有关 x-frame 问题的内容:

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

但是我认为不可能一次对所有帐户进行身份验证,但是setOAuthToken每次您想要这样做时,可能会对每个帐户进行解决方法。

它在谷歌文件中说明:

重要提示:setOAuthToken 函数允许应用使用当前身份验证令牌来确定选择器使用哪个 Google 帐户来显示文件。如果用户登录到多个 Google 帐户,这允许选择器显示相应授权帐户的文件。

资源:

https://developers.google.com/drive/web/integrate-open

于 2014-03-25T14:17:10.120 回答
2

We just recently added a setOAuthToken() method to the ShareClient that allows you to specify which user the dialog should use. More details in the Drive SDK release notes.

于 2015-09-04T12:57:56.263 回答