2010-09-08 14 views
5

मेरे नीचे दिए गए कोड का उपयोग कर इस बिंदु पर एक 401 अनधिकृत त्रुटि हर बार रिटर्न:401 अनधिकृत याहू OAuth

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://query.yahooapis.com/v1/yql?q=select%20fields.value%20from%20social.contacts%20where%20guid%3Dme&diagnostics=false"); 
request.Headers.Add(
    "Authorization: OAuth " + 
    "realm=\"" + "yahooapis.com" + "\"," + 
    "oauth_consumer_key=\"" + ConfigurationManager.AppSettings["yahoo_oauth_consumer_key"] + "\"," + 
    "oauth_nonce=\"" + Guid.NewGuid().ToString() + "\"," + 
    "oauth_signature_method=\"" + "PLAINTEXT" + "\"," + 
    "oauth_timestamp=\"" + ((DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1).Ticks)/(1000 * 10000)).ToString() + "\"," + 
    "oauth_token=\"" + accessToken.TokenValue + "\"," + 
    "oauth_version=\"1.0" + "\"," + 
    "oauth_signature=\"" + ConfigurationManager.AppSettings["yahoo_oauth_signature"] + "%26" + "\"" 
); 
StreamReader streamReader = new StreamReader(request.GetResponse().GetResponseStream(), true); 

और जब मैं कोड हर मैं सभी जानकारी देखने में कदम वहाँ है करने के लिए है कि याहू अनुरोध है शीर्षक में, फिर भी हर मैं सभी के इस 401

उत्तर

1

ठीक पहले मिलती है:

http://www.youtube.com/watch?v=lZLP0siJI-8&feature=related

दूसरे, समाधान;

स्थानीय होस्ट से भागो मत: पी

जब मैं याहू पर साइन अप कर मैं ध्यान से अधिक पढ़ा है चाहिए, मैं दूसरी बार सिर्फ देखने के लिए साइन अप किया है, और यह स्पष्ट रूप से कहा गया है जहाँ से डोमेन आप करेंगे हमारे एपीआई को कॉल कर रहे हैं।

+1

विकास, परीक्षण और डिबगिंग उद्देश्यों के लिए आपको स्थानीयहोस्ट से चलाने की आवश्यकता है। ऐसा करने का एक तरीका है। आप www.YOUR-DOMAIN.com पर 127.0.0.1 को इंगित करने के लिए C: \ Windows \ System32 \ drivers \ etc \ hosts फ़ाइल को संशोधित कर सकते हैं। आप C: \ को प्रतिस्थापित कर सकते हैं जो कभी भी आपके विंडोज ओएस को होस्ट कर रहा है। मुझे यकीन है कि गैर-विंडोज़ ओएस में एक ही काम करने का वैकल्पिक तरीका होना चाहिए। –

2

जैसा कि मुझे यकीन है कि आप जानते हैं, 401 का मतलब अधिकृत नहीं है। इसका शायद मतलब है कि आपका हस्ताक्षर मान्य नहीं है।

आप अपने सभी कोड पोस्ट नहीं करते हैं, लेकिन मैं नहीं देख सकता कि यह सही हस्ताक्षर कैसे सही ढंग से सही ढंग से उत्पन्न कर सकता है, क्योंकि आपकी हस्ताक्षर विधि किसी भी पैरामीटर को नहीं लेती है - सबसे अधिक बताते हुए टाइमस्टैम्प और गैर- - इनपुट के रूप में। यदि आप पहले ही हस्ताक्षर की गणना कर चुके हैं, तो आपको अधिकृत हेडर में सटीक उसी टाइमस्टैम्प का उपयोग करने की आवश्यकता है; एक अलग का उपयोग करने का मतलब यह होगा कि हस्ताक्षर मान्य नहीं है।

1

मैं एक ही बात में चल रहा था ... आप ध्यान से कल्पना को पढ़ने के लिए:

http://developer.yahoo.com/oauth/guide/oauth-requesttoken.html

ध्यान से प्रत्येक क्षेत्र के लिए निर्देशों का पालन करें। उदाहरण के लिए, मुझे नहीं लगता कि आपने oauth_callback = "oob" निर्दिष्ट किया है। मैं उस फ़ील्ड को भी याद कर रहा था, जैसे ही मैंने इसे निर्दिष्ट किया, मुझे टोकन मिला।

+1

ओह, और लोकलहोस्ट * नहीं * मामला है। – djunod

0

मैं आशा करता हूं कि यह किसी और की मदद करेगा।

याहू! डोमेन को लोअरकेस में संग्रहीत करता है और मैं कॉलबैक चर में मिश्रित मामले में डोमेन संग्रहीत कर रहा था।

इसलिए मैंने डोमेन को सभी लोअरकेस में परिवर्तित कर दिया और इसे "www" के साथ उपसर्ग किया। जिसने मुझे इस मुद्दे को हल करने के लिए मिला। याहू को मारने का प्रयास करें! वास्तविक त्रुटि संदेश देखने के लिए किसी भी ब्राउज़र से अंतिम OAUTH URL वाले सर्वर। ऐप के भीतर यह सिर्फ "अनधिकृत" कहता है।

संबंधित मुद्दे