2012-12-18 29 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(); 
相關問題