Alt=当提供访问令牌作为查询参数时,媒体未下载文件



您遇到的问题:当使用get请求下载文件并通过查询参数进行授权时,会出现错误。一旦删除了alt查询参数,请求就会按预期进行预成型,并返回一个文件资源体。

您期望发生的事情:在上预形成获取请求https://www.googleapis.com/drive/v3/files/[文件ID]?supportsAllDrives=true&access_token=[访问令牌]&alt=媒体会正确下载文件,没有问题,而是返回错误屏幕截图

复制步骤:

->在谷歌驱动器中创建文件
->通过授权服务帐户或使用用户帐户获取访问令牌
->获取创建的文件的ID和使用的帐户的访问令牌,并向https://www.googleapis.com/drive/v3/files/[文件ID]?supportsAllDrives=true&access_token=[访问令牌]&alt=媒体将[文件ID]替换为文件ID,将[访问令牌]替换为访问令牌
->查看结果。预期:文件下载。实际发生的情况:错误被赋予

其他信息(您尝试过的解决方法、查阅的文档等(:只是为了测试,我尝试删除alt参数,看看这个问题是否只在尝试下载文件时持续存在,事实确实如此。

我认为问题的原因是使用了access_token作为查询参数。从2020年1月起,访问令牌不能与access_token=###等查询参数一起使用。Ref在这种情况下,请在请求标头中包含访问令牌,而不是查询参数。

例如,示例curl命令如下所示。

curl 
-H "Authorization: Bearer [Access Token]" 
'https://www.googleapis.com/drive/v3/files/[File ID]?supportsAllDrives=true&alt=media'

参考文献:

  • Google Drive API和Google Picker API 即将更改

    首先,我们正在对Google Drive API的授权进行更改。如果使用查询参数中的访问令牌将下载请求授权给Drive API,则需要迁移请求以使用HTTP头进行身份验证。从2020年1月1日起,将不再支持使用查询参数中的访问令牌进行身份验证的对files.get、revisions.set和files.export端点的下载调用,这意味着您需要更新身份验证方法。

  • 下载文件

最新更新