Oauth2 Google Drive离线访问不适用于非谷歌应用文件?

时间:2014-02-03 03:26:24

标签: google-drive-api google-oauth

Google Drive API存在非常令人沮丧的问题。

这是Google App Engine Java环境。

我需要根据脱机权限下载文件 - 该文件与提供脱机权限的用户共享(“可以编辑”)。我要求完整https://www.googleapis.com/auth/drive范围。我存储了这个生成的刷新令牌。

然后,应用程序使用此刷新令牌获取访问令牌,用于尝试下载文件。如果文件是Google Apps文件(Google文档,电子表格等),则此工作文件;如果文件是包含内容的上传文件(例如PDF文件,Word文件等),则提供401。我可以通过附加?access_token = xxxx的共享网址来简单地确认这一点 - 这适用于Google Apps文件,但不适用于上传的普通文件,即webcontentlink网址上的401。请注意,https://www.googleapis.com/drive/v2/files/端点使用随后在下载调用上失败的访问令牌正确响应上载文件的元数据。

来自直接网址调用(使用access_token =)或servlet调用的完整html响应是

<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

云端硬盘中的非原生文件是否存在离线Google身份验证的已知问题?

1 个答案:

答案 0 :(得分:2)

基于descriptions of file attributes,您应该使用downloadUrl属性而不是webContentLink。

downloadUrl - 文件的短期下载URL。仅对包含存储在云端硬盘中的内容的文件填充此内容。

webContentLink - 用于在浏览器中使用基于Cookie的身份验证下载文件内容的链接。如果内容是公开共享的,则可以在没有任何凭据的情况下下载内容。