当用多个帐户登录时,一个人如何避免在change.list缩略图上使用404?

时间:2013-02-09 08:42:14

标签: google-drive-api

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

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

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

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

  3. 加载图片的缩略图。

  4. 预期行为:

    缩略图可以正常工作。

    实际行为:

    • 当我使用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

1 个答案:

答案 0 :(得分:4)

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

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

问题是您不知道哪个值可用(10),因此您必须使用Javascript以编程方式测试这两个URL,以查看哪个值有效或无效。< / p>

加载缩略图的另一种方法是使用OAuth 2身份验证。这更加强大。您可以通过附加&access_token=<Your_OAuth_2_access_token>轻松完成此操作。确保使用您在API请求中使用的相同OAuth访问令牌(以前称为承载令牌)。这样您就可以确定图像会加载。如果用户已退出其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小时内有效。