2010-09-02 7 views
5

मैं Google buzz पर autopost पर एक वेब ऐप लिख रहा हूं।gdata अज्ञात प्राधिकरण शीर्षलेख

मैंने "ओथ नृत्य" के प्रबंधन के लिए एक सी # लाइब्रेरी लिखी और इसमें ठीक काम करता है, मैं oauth_token और oauth_token_secret प्राप्त कर सकता हूं।

मैंने को मेरे oauth_token और oauth_token_secret को मान्य करने के लिए www.googlecodesamples.com/oauth_playground/ का उपयोग किया और यह ठीक काम करता है। मैंने उपयोगकर्ता की स्ट्रीम प्राप्त करने के लिए का परीक्षण किया और https://www.googleapis.com/buzz/v1/activities/@me/@self का परीक्षण किया।

लेकिन अब

मैं अपने सी # लाइब्रेरी का उपयोग कर भी ऐसा ही करने की कोशिश कर रहा हूँ, लेकिन मैं हमेशा इस त्रुटि मिलती है:

<?xml version="1.0" encoding="UTF-8"?> 
<errors xmlns="http://schemas.google.com/g/2005"> 
    <error> 
     <domain>GData</domain> 
     <code>invalid</code> 
     <location type="header">Authorization</location> 
     <internalReason>Unknown authorization header</internalReason> 
    </error> 
</errors> 

मेरे अनुरोध हेडर खेल का मैदान से एक की ही है।

Accept: */* 
Content-Type: application/atom+xml 
Authorization: OAuth oauth_version="1.0", oauth_nonce="9216320", 
oauth_timestamp="1283430867", oauth_consumer_key="www.mysite.com", 
oauth_token="1%2FZodlNmPP96GT11vYaWA0y6QoqKLqNqZ8bNmxknZZZc", 
oauth_signature_method="HMAC-SHA1", 
oauth_signature="Tuu82feKNWa4CxoDUyvtIEVODRA%3D" 
GData-Version: 2.0 

यहाँ सी # कोड है:

string headAuth = "Authorization: OAuth oauth_version=\"1.0\", oauth_nonce=\"9216320\", oauth_timestamp=\"1283430867\", 
oauth_consumer_key=\"www.mysite.com\", oauth_token= 
\"1%2FZodlNmPP96GT11vYaWA0y6QoqKLqNqZ8bNmxknZZZc\", 
oauth_signature_method=\"HMAC-SHA1\", oauth_signature= 
\"Tuu82feKNWa4CxoDUyvtIEVODRA%3D\""; 

HttpWebRequest req1 =(HttpWebRequest)HttpWebRequest.Create("https://www.googleapis.com/buzz/v1/activities/@me/@self"); 
req1.Method = "GET"; 
req1.Accept = "*/*"; 
req1.ContentType = "application/atom+xml"; 
req1.Headers.Add("Authorization", headAuth); 
req1.Headers.Add("GData-Version", "2.0"); 

try 
{ 
    HttpWebResponse response1 =(HttpWebResponse)req1.GetResponse(); 
    using (var sr = new StreamReader(response1.GetResponseStream())) 
    { 
     string test_1 = sr.ReadToEnd(); 
    } 
} 
catch (WebException e) 
{ 
    Stream objStream = e.Response.GetResponseStream(); 
    StreamReader objStreamReader = new StreamReader(objStream); 
    string err = objStreamReader.ReadToEnd(); 
} 

क्यों एक ही डेटा यह खेल के मैदान पर ठीक काम करता है और सी # कोड में काम नहीं करता है के साथ? कोई विचार यह कैसे ठीक करें?

धन्यवाद, Stefano

+1

क्या आपने इसे हल किया? क्योंकि मुझे प्रावधान API के साथ एक ही समस्या का सामना करना पड़ रहा है। – JochenJung

उत्तर

0

ऐसा लगता है कि दो बार अपने शीर्षक में OAuth प्राधिकरण जोड़ रहे हैं।

आपके हेडर स्ट्रिंग में आपके पास string headAuth = "Authorization: OAuth है और जब आप req1.Headers.Add("Authorization", headAuth); पर हेडर जोड़ते हैं तो आप इसे फिर से जोड़ रहे हैं।