2012-12-18 100 views
10

我似乎无法通过谷歌驱动器SDK检索文件的内容。要重现该问题我用API explorer来获取元数据的小文本文件:无法从Google驱动器API检索文件内容

200 OK 

- Show headers - 

{ 

"kind": "drive#file", 
"id": "0B75zvzRT_NusaDBtSTVmWWk1cVk", 
"etag": "\"B6kWtzuiQYCrVi2MWyRaub0CRyo/MTM1NTgzNDEzMjU5MA\"", 
"selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk", 
"webContentLink": "https://docs.google.com/uc?id=0B75zvzRT_NusaDBtSTVmWWk1cVk&export=download", 
"alternateLink": "https://docs.google.com/file/d/0B75zvzRT_NusaDBtSTVmWWk1cVk/edit", 
"iconLink": "https://ssl.gstatic.com/docs/doclist/images/icon_10_text_list.png", 
"thumbnailLink":  "https://lh4.googleusercontent.com/ntOMGJ9Is5KigDUzpOe6xKRqVqHPyeeXPImG1vZTF2FDM5YOyeCZT62FsdBWTnetBA=s220", 
"title": "sync.txt", 
"mimeType": "text/plain", 
"description": "description", 
"labels": { 
    "starred": false, 
    "hidden": false, 
    "trashed": false, 
    "restricted": false, 
    "viewed": true 
}, 
"createdDate": "2012-12-18T11:49:21.710Z", 
"modifiedDate": "2012-12-18T12:35:32.590Z", 
"modifiedByMeDate": "2012-12-18T12:35:32.590Z", 
"lastViewedByMeDate": "2012-12-18T12:35:32.416Z", 
"parents": [ 
    { 

    "kind": "drive#parentReference", 
    "id": "0B75zvzRT_NusdVVJeGk2dVc2VHM", 
    "selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk/parents/0B75zvzRT_NusdVVJeGk2dVc2VHM", 
    "parentLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusdVVJeGk2dVc2VHM", 
    "isRoot": false 
    } 
], 
"downloadUrl": "https://doc-0g-0-docs.googleusercontent.com/docs/securesc/b2hod7vud4bdud0ju4mut5hh2assmdju/rmi0iqd62g0im724ngmc5uva7femfffo/1355832000000/00903399969355284739/00903399969355284739/0B75zvzRT_NusaDBtSTVmWWk1cVk?h=16653014193614665626&e=download&gd=true", 
"userPermission": { 
    "kind": "drive#permission", 
    "etag": "\"B6kWtzuiQYCrVi2MWyRaub0CRyo/kH0lkP-s4aFu1o5itR2fFqyLM6o\"", 
    "id": "me", 
    "selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk/permissions/me", 
    "role": "owner", 
    "type": "user" 
}, 
"originalFilename": "sync.txt", 
"fileExtension": "txt", 
"md5Checksum": "ecd21579645508d1c206d5e6e20fd101", 
"fileSize": "156", 
"quotaBytesUsed": "156", 
"ownerNames": [ 
    "Sam Smith" 
], 
"lastModifyingUserName": "Sam Smith", 
"editable": true, 
"writersCanShare": true 
} 

我然后单击将downloadURL链接,我总是得到即用空体200响应空响应。如果我从Url的末尾删除“gd = true”参数,它可以正常下载。在我的节目同样的事情发生,除了删除“GD =真”也不能正常工作(可能是因为程序在服务器上运行,因此我不登录到我的帐户)。

我的主要问题是为什么downloadUrl链接没有返回一个响应而没有用参数摆弄?

UPDATE:发现其他人的报告完全一样的问题HereHereHere

SOLUTION: OK我终于工作了。对于downloadURL上的GET请求,您似乎需要在头中发送访问令牌,即发送一个“Authorization:Bearer {您的访问令牌}”头。不要将访问令牌作为查询字符串的一部分发送。在Drive SDK中使用的每个其他API调用都可以使用访问令牌作为查询字符串的一部分 - 除此之外。

+0

是的,你是正确的。请考虑关闭此问题或提供接受答案。 –

回答

10

好的我终于搞定了。这似乎对将downloadURL您需要发送的访问令牌在头即发送GET请求“授权:承载{您的访问令牌}”标头。不要将访问令牌作为查询字符串的一部分发送。我已经在驱动SDK中使用所有其他API调用是细跟的访问令牌作为查询字符串的一部分 - 除了这一个。

+0

请让我知道其中u是将授权:承载{您的访问令牌}在 – NextStep

+0

哎,有同样的问题,你对解决方案的代码示例?谢谢 – aleXela

0

尝试下面的代码,用来请求

var service1=SetCredential(); 
var AccessToken=((Google.Apis.Auth.OAuth2.UserCredential)service1.HttpClientInitializer).Token.AccessToken; 
String link = "https://www.googleapis.com/drive/v2/files/" + fileId ; 

HttpWebRequest request = WebRequest.Create(link) as HttpWebRequest; 
request.Method = "GET"; 
request.Headers.Add("Authorization", "Bearer " + AccessToken); 
WebResponse response = request.GetResponse(); 
相关问题