当我在多个帐户上签名并为changes.list进行API调用时,我获得了404的图像缩略图。
重现问题的完整步骤如下所述:
使用两个帐户登录,一个是个人帐户,一个是Google应用帐户,分别是User_gmail和User_gapps
进行API调用以获取网址,以获取驱动器中的更改列表。
加载图片的缩略图。
预期行为:
缩略图可以正常工作。
实际行为:
当我使用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
答案 0 :(得分:4)
有两种方法可以查看Google文档的缩略图。通过Google Drive API获取缩略图的网址后,可以使用“Cookie”授权或OAuth 2.0授权查看此网址。
您似乎正在使用“Cookie”授权(即用户当前已在浏览器中签名)。会发生什么情况是默认情况下浏览器将使用这两个帐户中的一个,不幸的是它可能不会使用正确的帐户。
在该特定情况下,您可以将&authuser=0
或&authuser=1
附加到缩略图的网址,这将强制使用一个帐户或另一个,两个值中的一个将起作用。
问题是您不知道哪个值可用(1
或0
),因此您必须使用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小时内有效。