2012-12-18 29 views
10

Tôi dường như không thể truy xuất nội dung của tệp qua SDK ổ đĩa google. Để tạo lại vấn đề tôi sử dụng API explorer để có được các dữ liệu meta cho một tập tin văn bản nhỏ:Không thể truy xuất nội dung tệp từ API ổ google

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 
} 

tôi sau đó nhấp vào liên kết downloadUrl và tôi luôn luôn nhận được một phản hồi trống tức là một phản ứng 200 với một cơ thể trống rỗng. Nếu tôi xóa tham số "gd = true" khỏi phần cuối của Url, nó tải xuống tốt. Trong chương trình của tôi điều tương tự xảy ra ngoại trừ việc loại bỏ "gd = true" cũng không hoạt động (có thể vì chương trình chạy trên máy chủ và do đó tôi không đăng nhập vào tài khoản của mình).

Câu hỏi chính của tôi là tại sao liên kết downloadUrl không trả về phản hồi mà không gây khó chịu với các tham số?

UPDATE: Tìm thấy người khác báo cáo các vấn đề chính xác cùng Here, HereHere

SOLUTION: OK Cuối cùng tôi đã làm việc nó ra. Dường như cho yêu cầu GET trên URL tải xuống, bạn cần phải gửi mã thông báo truy cập trong các tiêu đề, hãy gửi tiêu đề "Cấp phép: Vòng đệm {access access}". KHÔNG gửi mã thông báo truy cập như một phần của chuỗi truy vấn. Mọi cuộc gọi API khác mà tôi đã sử dụng trong SDK Drive đều tốt với mã thông báo truy cập như là một phần của chuỗi truy vấn - ngoại trừ chuỗi này.

+0

Vâng, bạn là chính xác. Vui lòng xem xét việc đóng câu hỏi này hoặc cung cấp câu trả lời để chấp nhận. –

Trả lời

10

OK cuối cùng tôi đã làm việc đó. Dường như cho yêu cầu GET trên URL tải xuống, bạn cần phải gửi mã thông báo truy cập trong các tiêu đề, hãy gửi tiêu đề "Cấp phép: Vòng đệm {access access}". KHÔNG gửi mã thông báo truy cập như một phần của chuỗi truy vấn. Mọi cuộc gọi API khác mà tôi đã sử dụng trong SDK Drive đều tốt với mã thông báo truy cập như là một phần của chuỗi truy vấn - ngoại trừ chuỗi này.

+0

xin vui lòng cho tôi biết nơi bạn đang đặt ủy quyền: Bearer {access token của bạn} trong – NextStep

+0

hey, có cùng một vấn đề, bạn có một ví dụ mã cho giải pháp? cảm ơn – aleXela

0

Hãy thử sử dụng bên dưới mã cho yêu cầu

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(); 
Các vấn đề liên quan