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

当登录多个帐户时,谷歌文件选择器加载了错误的文档

赖绪
2023-03-14

我们有以下场景:

  • 用户使用帐号 A 登录谷歌云端硬盘
  • 然后,用户添加一个新帐户并使用帐户 B 登录 Google 云端硬盘(此时有两个有效的帐户)
  • 在帐号 B 中,用户点击云端硬盘中的创建按钮。我们的应用程序要求用户选择要用于创建文件的帐户,并且用户选择帐户B(他已经使用的帐户B)。我们的应用程序显示文件选取器,但他看到的文件是账户A中的文件,而不是账户B中的文件。

我们遵循了开发人员API指南中指出的所有步骤,包括设置授权令牌。下面是我们的createPicker函数:

function createPicker() {
  if (pickerApiLoaded && oauthToken) {
    new google.picker.PickerBuilder()
      .addView(google.picker.ViewId.DOCS)
      .setSelectableMimeTypes(selectableMimes)
      **.setOAuthToken(oauthToken)**
      .setCallback(pickerCallback)
      .enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
      .build()
      .setVisible(true);
  }
}

这就是我们获取奥奥特肯值的方式:

gapi.auth.authorize({
          client_id: clientId,
          scope: scope,
          immediate: false,
        }, function(authResult) {
          if (authResult && !authResult.error) {
            **oauthToken = gapi.auth.getToken().access_token;**
            createPicker();
          }
        }); 

在调试时,我们已经确认,如果用户选择帐户A,我们将获得一个oAuthToken,如果用户选择帐户B,我们将获得一个不同的oAuthToken。因此,我们为每个帐户发送不同的令牌,这是应该的。

关于为什么用户在选择账户B(为账户B生成令牌)后可以看到账户A上的文件的任何想法?任何关于我们错过了什么或做错了什么的想法?

共有1个答案

刁冠宇
2023-03-14

默认情况下,选取器将显示该浏览器中访问过的任何公共文件。这是奇怪的行为,很难让选择者完全按照你想要的去做。

尝试使用feature feature.MINE_ONLY

  .enableFeature(google.picker.Feature.MINE_ONLY)

https://developers.google.com/picker/docs/reference#Feature

这将“在显示 Google 云端硬盘中的项目时,仅显示用户拥有的文档”。

 类似资料:
  • 我正在尝试使用我的应用程序中的google帐户登录用户。当用户第一次在我的应用程序中使用google帐户登录时,我遇到了一个问题。它显示了以下错误:传递给Illumb\Auth\Guard::login()的参数1必须实现interface Illumb\Auth\UserInterface,在我的控制器中为空我有以下信息: 我知道问题出在Auth::login($user);因为插入与Auth:

  • 有没有办法,我可以强制谷歌帐户选择器显示,即使用户只用一个帐户登录。 我已尝试重定向到此 URL: 它似乎有效,但我不知道是否有任何其他条件可能会失败。

  • 我试图将谷歌登录集成到我的应用程序中。我没有后端服务器,我只是得到登录到我的应用程序的谷歌帐户的详细信息。 我第一次尝试使用谷歌登录的例子,但我得到了一个错误(除了打印下面的stacktrace外,没有进行任何代码更改)。我只是使用了signianctivity示例,因为我没有后端服务器。 密码 从我所读到的,这个问题可能是由SHA1一代引起的。 我遵循了完整的指南,但显然它不起作用。 我从gra

  • 我通过外部API上传谷歌云存储桶中的图像。我还分配了所有的访问权限。我和我的朋友分享了文件下载链接,类似于 但问题是,有时它要求谷歌认证登录,有时不要求。

  • 失败:生成失败,出现异常。 > 其中:脚本'C:\src\flutter\包\flutter_tools\gradle\flutter.gradle'行:1035 错误:任务:app:compileFlutterBuildDebug的执行失败。 进程'命令'C:\src\flutter\bin\flutter.bat"以非零退出值1结束 尝试:使用--stack-trace选项运行以获取堆栈跟踪。