3

当我在多个帐户上登录并为 changes.list 进行 API 调用时,我得到 404 的图像缩略图。

重现该问题的完整步骤如下所述:

  1. 使用两个帐户登录,一个是个人 gmail 帐户,一个是 Google Apps 帐户,分别是 User_gmail 和 User_gapps

  2. 进行 API 调用以获取 URL,以获取驱动器中的更改列表。

  3. 加载图像的缩略图。

预期行为:

缩略图图像工作。

实际行为:

  • 当我使用 User_gmail 和 User_gapps 登录并在身份验证流程中选择 User_gmail 时,我可以看到所有已修改文档的缩略图。

  • 当我仅使用 User_gapps 或 User_gmail 登录时,我可以正确看到缩略图。

  • 但是,当以两个用户的身份登录并在身份验证流程中选择 User_gapps 作为用户时,我看到了损坏的缩略图。

更新:重现此问题的最简单方法是登录多个帐户,一个个人帐户和一个应用程序帐户,然后使用此 api。如果您使用您的工作帐户授权 API,并执行请求,然后单击“thumbnailLink”URL,您可以看到 404。

https://developers.google.com/apis-explorer/#p/drive/v2/drive.changes.list?includeDeleted=false

4

1 回答 1

4

有两种方法可以查看 Google 文档的缩略图。通过 Google Drive API 获取缩略图的 URL 后,可以使用“Cookie”授权或 OAuth 2.0 授权查看此 URL。

您似乎正在使用“Cookie”授权(即用户当前已登录浏览器)。发生的情况是浏览器默认使用这两个帐户之一,不幸的是它可能没有使用正确的帐户。在该特定情况下,您可以附加&authuser=0或附加&authuser=1到缩略图的 URL,这将强制使用帐户或另一个,这两个值之一将起作用。

问题是您不知道哪个值会起作用(10),因此您必须使用 Javascript 以编程方式测试这两个 URL 以查看哪个起作用或失败。

加载缩略图的另一种方法是使用 OAuth 2 auth。这更健壮。您可以通过附加&access_token=<Your_OAuth_2_access_token>. 确保使用您在 API 请求中使用的相同 OAuth 访问令牌(以前称为 Bearer 令牌)。这样您就可以确定图像会加载。如果用户退出了他的 Google 帐户,这甚至可以工作。您将需要访问实际文件的数据。drive.readonly.metadata因此,例如,如果您已授权范围,这将不起作用。您需要授权以下范围之一:

  • https://www.googleapis.com/auth/drive.file
  • https://www.googleapis.com/auth/drive
  • https://www.googleapis.com/auth/drive.readonly

请注意:访问令牌仅在 1 小时内有效。

于 2013-02-13T23:29:18.220 回答