无法使GoogleDriveAPI共享对话框在登录到多个帐户时工作

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

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

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

这与在Google Drive SDK上调用showSettingsDialog()非常相似,因为X-Frame-Options禁止显示,所以会抛出拒绝显示文档。但是,我已经完成了调试中显示的调试结果,无效,即:

  • 你在Google API控制台的Google Drive SDK设置中设置的“open with”网址必须与使用共享对话框的网页具有相同的网域。
  • 目前,你需要将你的应用程序安装到你的Google云端硬盘上才能使嵌入式小工具正常工作。我们目前正在努力消除这一限制,因为我们启动了API的第2版并不总是有道理。

相关的代码是:

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

有没有办法让这个工作在多个账户登录?

提问于
用户回答回答于

我们最近添加了一个setOAuthToken()方法ShareClient,允许你指定对话框应该使用哪个用户。Drive SDK 发行说明中的更多详细信息。

用户回答回答于

你可能需要仔细阅读有关X帧问题的内容:

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

但是我认为不可能一次验证所有账户,但是setOAuthToken每当你想要这样做时,可能需要为每个账户提供一种解决方法。

它在谷歌文档中声明:

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

资源:

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

扫码关注云+社区