2012-12-18 11 views
10

Wygląda na to, że nie mogę odzyskać zawartości pliku przez SDK do google. Aby odtworzyć problem używam API explorer aby uzyskać dane meta dla małego pliku tekstowego:Nie można odzyskać zawartości pliku z google drive 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 
} 

Następnie kliknij na link downloadURL a ja zawsze pustą odpowiedź tj odpowiedzi 200 z pustym ciałem. Jeśli usuniemy parametr "gd = true" z końca adresu URL, pobieranie będzie w porządku. W moim programie dzieje się tak samo, z wyjątkiem tego, że usunięcie "gd = true" również nie działa (prawdopodobnie dlatego, że program działa na serwerze i dlatego nie jestem zalogowany na moim koncie).

Moje główne pytanie brzmi: dlaczego link downloadUrl nie zwraca odpowiedzi bez błądzenia się z parametrami?

UPDATE: Znaleziono inni raportowania dokładnie ten sam problem Here, Here i Here

ROZWIĄZANIE: OK I wreszcie pracował go. Wygląda na to, że żądanie GET na the downloadURL musisz wysłać token dostępu w nagłówkach, np. Wysłać nagłówek "Authorization: Bearer {your access token}". NIE wysyłaj tokenu dostępu jako części ciągu zapytania. Każde inne wywołanie API, którego użyłem w pakiecie Drive SDK, jest w porządku z tokenem dostępu jako częścią ciągu zapytania - z wyjątkiem tego.

+0

Tak, masz rację. Zastanów się nad zamknięciem tego pytania lub udzieleniem odpowiedzi na akceptację. –

Odpowiedz

10

OK W końcu to rozwiązałem. Wygląda na to, że żądanie GET na the downloadURL musisz wysłać token dostępu w nagłówkach, np. Wysłać nagłówek "Authorization: Bearer {your access token}". NIE wysyłaj tokenu dostępu jako części ciągu zapytania. Każde inne wywołanie API, którego użyłem w pakiecie Drive SDK, jest w porządku z tokenem dostępu jako częścią ciągu zapytania - z wyjątkiem tego.

+0

proszę dać mi znać, gdzie umieszczasz Authorization: Bearer {your access token} w – NextStep

+0

hej, mając ten sam problem, czy masz przykład kodu do rozwiązania? dzięki – aleXela

0

Spróbuj skorzystać z poniższego kodu na życzenie

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(); 
Powiązane problemy