当前位置: 首页 > 知识库问答 >
问题:

登录多个帐号后,无法让 Google 云端硬盘 API 共享对话框正常工作

东门茂实
2023-03-14

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

但是,当我注销所有Google帐户然后仅登录一个帐户时,共享对话框运行良好。一旦我在新选项卡中登录第二个帐户,共享对话框就不再工作并因上述错误而失败。

这与在Google Drive SDK上调用showSettingsDialog()非常类似,因为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();

有什么方法可以让这个工作与多个帐户登录?

共有2个答案

薛墨一
2023-03-14

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

张翰海
2023-03-14

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

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

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

谷歌文档中写道:

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

源:

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

 类似资料:
  • 是否可以将共享文档从一个帐户复制到另一个帐户。帐户不在同一个域中,因此我不能使用域范围的委托(https://developers.google.com/drive/delegation.) 使用Google Drive复制功能(https://developers.google.com/drive/v2/reference/files/copy)时,API会认为文件和ID位于当前用户的Drive

  • 问题内容: 我的 Google云端硬盘 中有一些其他人与我共享的文件,我希望能够对其进行查询。不幸的是,MetadataBuffer的结果计数为0 这是代码: 我正在使用新的Google云端硬盘,并且还尝试将一些共享文件从“ 传入文件夹” 移到“ 我的云端硬盘” 根目录中。依然没有。我将不胜感激任何帮助和建议。 问题答案: 如前所述,在无法使用Google Drive api android从Go

  • 背景资料 我在应用程序中使用Google Plus OAuth和Firebase。当用户点击登录按钮时,账户选择对话框出现,用户选择特定的账户并登录。 问题 假设用户在该设备中有两个帐户,A和b。最初,他选择帐户A登录,然后使用该应用程序,然后决定退出。现在他再次点击登录按钮,但是账户选择对话框没有出现,它自动使用先前选择的账户a登录。 我想要的 我希望用户每次都能看到帐户选择对话框,并让他们有机

  • 问题内容: 我想在Google云端硬盘中创建一个空的Google表格(仅使用元数据创建)。当我提到Google SpreadSheet API 文档时,它说要使用DocumentsList API,但已弃用,而是要求我使用Google Drive API。在云端硬盘API文档中,我找不到创建空工作表的任何方法。有人知道如何执行此操作吗? 问题答案: 您可以使用做这个驱动器的API被设置MIME类型

  • 问题内容: 好吧,所有的工作,直到我生成签名的apk。我按照Google开发人员页面上的指示进行了整个过程 1.我生成了带有keyhash和包名称的google-services.json文件2. 包括了所有的类级别和应用程序级别的依赖项 应用程序gradle文件 我的登录Java代码 问题答案: 据我了解,您已经在开发人员控制台中提供了调试SHA1,然后您对apk进行了签名,并更改了SHA1。如

  • 问题内容: 我在Google云端硬盘上存储了一个zip文件(已公开共享)。我想知道如何在Golang中下载它。当前代码仅创建一个名为“ file.zip”的空白文件: 问题答案: 我找到了解决方案。使用:https://googledrive.com/host/ ID 而不是:https : //docs.google.com/uc?export=download& id = ID