2012-12-18 8 views
10

से फ़ाइल सामग्री पुनर्प्राप्त करने में असमर्थ मैं Google ड्राइव एसडीके के माध्यम से फ़ाइल की सामग्री को पुनर्प्राप्त करने में असमर्थ प्रतीत होता हूं। समस्या को पुन: करने के लिए मैं एक छोटे से पाठ फ़ाइल के लिए मेटा डेटा प्राप्त करने के लिए API explorer का उपयोग करें: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 
} 

मैं तो downloadUrl लिंक पर क्लिक करें और मैं हमेशा एक खाली शरीर के साथ एक 200 प्रतिक्रिया यानी एक खाली प्रतिक्रिया मिल। अगर मैं यूआरएल के अंत से "gd = true" पैरामीटर को हटा देता हूं तो यह ठीक डाउनलोड होता है। मेरे कार्यक्रम में एक ही चीज होती है "gd = true" को हटाने के अलावा भी काम नहीं करता है (शायद क्योंकि प्रोग्राम सर्वर पर चलता है और इसलिए मैं अपने खाते में लॉग इन नहीं हूं)।

मेरा मुख्य प्रश्न यह है कि downloadUrl लिंक पैरामीटर के साथ झुकाव के बिना प्रतिक्रिया क्यों नहीं देता है?

अद्यतन: मिले अन्य लोगों को ठीक उसी मुद्दे की रिपोर्टिंग Here, Here और Here

समाधान: ठीक मैं अंत में इसे बाहर काम किया। ऐसा लगता है कि downloadURL पर GET अनुरोध के लिए आपको हेडर में एक्सेस टोकन भेजने की आवश्यकता है यानी "प्राधिकरण: बेयरर {आपका एक्सेस टोकन}" हेडर भेजें। क्वेरी स्ट्रिंग के हिस्से के रूप में एक्सेस टोकन न भेजें। मैं ड्राइव एसडीके में उपयोग किए गए प्रत्येक अन्य एपीआई कॉल को क्वेरी स्ट्रिंग के हिस्से के रूप में एक्सेस टोकन के साथ ठीक है - इसे छोड़कर।

+0

हाँ, आप सही हैं के लिए नीचे दिए गए कोड का उपयोग करने का प्रयास करें। कृपया इस प्रश्न को बंद करने या स्वीकार करने का उत्तर देने पर विचार करें। –

उत्तर

10

ठीक है मैंने अंत में इसे काम किया। ऐसा लगता है कि downloadURL पर GET अनुरोध के लिए आपको हेडर में एक्सेस टोकन भेजने की आवश्यकता है यानी "प्राधिकरण: बेयरर {आपका एक्सेस टोकन}" हेडर भेजें। क्वेरी स्ट्रिंग के हिस्से के रूप में एक्सेस टोकन न भेजें। मैं ड्राइव एसडीके में उपयोग किए गए प्रत्येक अन्य एपीआई कॉल को क्वेरी स्ट्रिंग के हिस्से के रूप में एक्सेस टोकन के साथ ठीक है - इसे छोड़कर।

+0

कृपया मुझे बताएं कि आप कहां रख रहे हैं प्राधिकरण: – 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();