Google 云端硬盘 - 无法通过经过身份验证的 (OAuth2) 请求下载缩略图 [英] Google Drive - Unable to download thumbnails with an authenticated (OAuth2) request
问题描述
对于所有 Google 文档,我无法从文件响应返回的 ThumbnailLink 属性下载缩略图.
For all Google Docs, I'm not able to download the thumbnail image from the ThumbnailLink property returned with a file response.
我总是收到403 - Forbidden"错误页面,其中包含类似以下的消息:
I always receive a '403 - Forbidden' error page with a message similar to this:
您的客户端无权从该服务器获取 URL/thumbnailLink.
Your client does not have permission to get URL /thumbnailLink from this server.
(客户端IP地址:clientIP)
未经授权的用户
我尝试使用谷歌提供的类MediaDownloader.cs,我也尝试使用以下代码下载它:
I try to use the class MediaDownloader.cs provided by Google and I also try to download it by using this code:
using (Stream stream = service.HttpClient.GetStreamAsync(p_DownloadUrl).Result) {
StreamUtilities.Copy(p_WriteDelegate, stream.Read);
}
其中服务"是正确实例化的 DriveService (IClientService) 对象.我可以用它来下载文件或提出任何其他请求.我使用Drive.Readonly"范围.
where 'service' is a DriveService (IClientService) object properly instantiated. I can use it to download the file or make any other requests. I use the 'Drive.Readonly' scope.
下载 Word、Excel、PDF 等文档的缩略图没有任何问题,因为这些链接是公开的,不需要任何类型的身份验证.
I didn't have any issue to download the Thumbnail for a Word, Excel, PDF, etc. documents, because these links are public and doesn't require any kind of authentication.
我做错了什么?
是否可以下载 Google Docs 文档的缩略图?
Is it possible to download the thumbnail for a Google Docs document?
推荐答案
我们最近进行了更改以解决此问题.请再次尝试您的代码,看看您是否仍然收到此错误.我能够运行以下代码来成功下载我的 Google 文档的缩略图.
We've recently made a change to fix this issue. Please try your code again and see if you are still getting this error. I was able to run the following code to successfully download a thumbnail of my Google Document.
# Get oauth credentials
...
# Authorize an http object
http = httplib2.Http()
http = credentials.authorize(http)
drive_service = build('drive', 'v2', http=http)
# Google Document type ID
docId = '1ns9x5BMIZAeUR-eXerqgpaHBBGkl_-_KCVpVoV5opn8'
files = drive_service.files().get(fileId=docId).execute()
thumbnailLink = files['thumbnailLink']
print 'Downloading thumbnail at: ', thumbnailLink
response, content = http.request(thumbnailLink)
print response.status
with open('thumbnail.jpg', 'wb') as f:
f.write(content)
这篇关于Google 云端硬盘 - 无法通过经过身份验证的 (OAuth2) 请求下载缩略图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!