登录多个帐户时,Google文件选取器会加载错误的文档

时间:2014-05-29 18:41:02

标签: google-drive-api google-picker

我们有以下情况:

  • 用户使用帐户A登录Google云端硬盘
  • 然后,用户添加一个新帐户并使用帐户B登录到Google云端硬盘(此时有两个有效的有效帐户)
  • 在帐户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);
  }
}

这就是我们获取oauthToken值的方式:

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,我们会得到另一个。因此,我们正在为每个帐户发送不同的令牌,因为它应该是。

在选择帐户B(为帐户B生成令牌)后,用户为何会查看帐户A上的文件?知道我们遗失或做错了什么?

1 个答案:

答案 0 :(得分:0)

默认情况下,选择器将显示该浏览器中曾访问过的任何公共文件。这是一种奇怪的行为,并且很难让选择器完全按照你的意愿行事。

尝试使用功能Feature.MINE_ONLY

  .enableFeature(google.picker.Feature.MINE_ONLY)

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

这将“仅显示用户在显示Google云端硬盘中的内容时所拥有的文档。”