करो # खुद सी # में ट्विटर। भाग 1: OAuth प्राधिकरण



एक बिंदु पर, ट्विटर माइक्रोब्लॉगिंग नेटवर्क के लिए एक क्लाइंट प्रोग्राम लिखने की इच्छा थी, C # को प्रोग्रामिंग भाषा के रूप में चुना गया था।

आपको याद दिला दूं कि OAuth एक खुला प्राधिकरण प्रोटोकॉल है, जो आपको उपयोगकर्ता (उपयोगकर्ता को थर्ड पार्टी) को एक उपयोगकर्ता नाम और पासवर्ड दिए बिना एक तृतीय पक्ष प्रदान करता है। इस मामले में तीसरा पक्ष हम स्वाभाविक रूप से हमारे आवेदन के साथ होगा।

सिद्धांत रूप में, यह मार्गदर्शिका OAuth प्राधिकरण के लिए न केवल ट्विटर पर, बल्कि OAuth का उपयोग करने वाले किसी अन्य पोर्टल में भी है, उदाहरण के लिए, कुख्यात FriendFeed।



ओबेर प्रोटोकॉल का उपयोग करके प्राधिकरण की प्रक्रिया को हैबर पर कुछ विस्तार से माना जाता है।

ट्विटर अकाउंट से लॉग इन करने के लिए हमें ट्विटर डेवलपर्स पर अपना आवेदन दर्ज करना होगा।

प्रश्नावली भरें और रजिस्टर आवेदन बटन पर क्लिक करें, फिर आपको आवेदन पृष्ठ पर भेज दिया जाएगा। हम इस पर दो लाइनों में रुचि रखते हैं, अर्थात् उपभोक्ता कुंजी और उपभोक्ता रहस्य - हमें उन्हें किसी तरह से बचाने की आवश्यकता है क्योंकि हमें जल्द ही उनकी आवश्यकता होगी।

और अब कुछ सिद्धांत। वास्तव में, प्राधिकरण प्रक्रिया को सशर्त रूप से तीन चरणों में विभाजित किया जा सकता है:

1. हम प्रारंभिक मान oauth_token और oauth_secret प्राप्त करने के लिए api.twitter.com/oauth/request_token का अनुरोध करते हैं

2. इन मूल्यों को प्राप्त करने के बाद, हम ब्राउज़र विंडो में एक और अनुरोध करते हैं, लेकिन पहले से ही api.twitter.com/oauth/authorize पर और उपयोगकर्ता को ट्विटर खाते से अपना उपयोगकर्ता नाम / पासवर्ड दर्ज करने के लिए प्रेरित किया जाएगा, और फिर एक अन्य रूप जिसमें यह सूचित किया जाएगा कि हमारा अद्भुत एप्लिकेशन उपयोगकर्ता खाता जानकारी और निश्चित रूप से दो बटन का उपयोग करना चाहता है: अस्वीकृति और पुष्टि के लिए। जब आप पुष्टिकरण बटन पर क्लिक करते हैं, तो एक पृष्ठ खुलता है जिस पर पिन कोड लिखा होगा। उपयोगकर्ता को हमारे आवेदन में पिन कोड पास करना होगा।

3. और जब उपयोगकर्ता हमारे आवेदन में पिन कोड दर्ज करता है, तो हमें oauth_token और oauth_secret प्राप्त करने के लिए api.twitter.com/oauth/access_token पर तीसरा अनुरोध करना होगा, जिसका उपयोग सिस्टम में उपयोगकर्ता की पहचान करने के लिए किया जाना चाहिए।

हम सब कुछ क्रमिक रूप से करेंगे और लेख के अंत तक हमें एक ऐसा आवेदन प्राप्त होना चाहिए जो OAuth प्राधिकरण को पारित कर सके।

अब हम प्रोग्राम लिखने की प्रक्रिया की ओर मुड़ते हैं।

एक नया कंसोल एप्लिकेशन बनाएं।

तो, पहले हम इस प्रकार की के बारे में एक प्रश्न बनाने की जरूरत है api.twitter.com/oauth/request_token?oauth_consumer_key= <?> और Oauth_signature_method = <?> और Oauth_signature = <?> और Oauth_timestamp = <?> और Oauth_nonce = <?> और Oauth_version = <? >

कहां <?> आपके मूल्य होने चाहिए। कुछ मान प्राप्त करने के लिए, मैंने छोटे लेकिन बहुत सफल OAuthBase.cs वर्ग का उपयोग किया

इसे डाउनलोड करें और एप्लिकेशन फ़ोल्डर में डालें।



चूंकि हम केवल डाउनलोड किए गए वर्ग के साथ अनुरोध करेंगे और काम करेंगे, इसलिए हमें प्रोग्राम हेडर में निम्नलिखित पंक्तियां होनी चाहिए:

using System;<br> using OAuth;<br> using System.Net;<br> using System.IO;<br> using System.Text; <br><br> * This source code was highlighted with Source Code Highlighter .







अब हमें क्वेरी स्ट्रिंग बनाने की आवश्यकता है, स्ट्रिंग प्रकार request_url के एक चर को इसका मान असाइन करें और पहले अनुरोध को निष्पादित करें।



// : <br> Uri uri = new Uri ( "http://api.twitter.com/oauth/request_token" );<br> string consumerKey = " consumerKey" ;<br> string consumerSecret = " consumerSecret" ;<br> // OAuthBase <br>OAuthBase oAuth = new OAuthBase();<br> // <br> string timeStamp = oAuth.GenerateTimeStamp();<br> string nonce = oAuth.GenerateNonce();<br> string normUri;<br> string normParams;<br> string sig = oAuth.GenerateSignature(uri, consumerKey, consumerSecret, string .Empty, string .Empty, "GET" , timeStamp, nonce, OAuth.OAuthBase.SignatureTypes.HMACSHA1, out normUri, out normParams);<br> // <br> string request_url = <br> "http://api.twitter.com/oauth/request_token" + "?" +<br> "oauth_consumer_key=" + consumerKey + "&" +<br> "oauth_signature_method=" + "HMAC-SHA1" + "&" +<br> "oauth_signature=" + sig + "&" +<br> "oauth_timestamp=" + timeStamp + "&" +<br> "oauth_nonce=" + nonce + "&" +<br> "oauth_version=" + "1.0" ;<br> Console .WriteLine( "Req: " + request_url); // <br> Console .WriteLine( "--------------------------------------------------------" );<br> // <br>HttpWebRequest Request = (HttpWebRequest) HttpWebRequest.Create(request_url);<br>HttpWebResponse Response = (HttpWebResponse)Request.GetResponse(); <br>StreamReader Reader = new StreamReader(Response.GetResponseStream(), Encoding .GetEncoding(1251));<br> string outline = Reader.ReadToEnd(); <br> Console .WriteLine( "Out: " + outline);<br> Console .WriteLine( "--------------------------------------------------------" );<br> // <br> char [] delimiterChars = { '&' , '=' };<br> string [] words = outline.Split(delimiterChars);<br> string oauth_token = words[1]; <br> string oauth_token_secret = words[3];<br> string oauth_callback_confirmed = words[5];<br> // <br> Console .WriteLine( "oauth_token = " + oauth_token); <br> Console .WriteLine( "oauth_token_secret = " + oauth_token_secret); <br> Console .WriteLine( "oauth_callback_confirmed = " + oauth_callback_confirmed);<br> Console .WriteLine( "--------------------------------------------------------" ); <br><br> * This source code was highlighted with Source Code Highlighter .







अब आप दूसरे चरण पर आगे बढ़ सकते हैं, जिस पर उपयोगकर्ता को पिन कोड दर्ज करने के लिए प्रेरित किया जाएगा



// <br> // PIN <br>request_url = "http://api.twitter.com/oauth/authorize?oauth_token=" + oauth_token;<br> Console .WriteLine( "Req: " + request_url);<br> Console .WriteLine( "--------------------------------------------------------" );<br>System.Diagnostics.Process.Start(request_url); // PIN- <br> Console .Write( "Enter PIN: " );<br> string oauth_verifier = Console .ReadLine(); // oauth_verifier — PIN-. <br> Console .WriteLine( "--------------------------------------------------------" ); <br><br> * This source code was highlighted with Source Code Highlighter .







और अंतिम अनुरोध, जिसका उत्तर हमें सहेजना होगा और खाता डेटा तक पहुंच प्राप्त करना होगा



// <br>request_url = <br> "http://api.twitter.com/oauth/access_token" + "?" +<br> "oauth_consumer_key=" + consumerKey + "&" +<br> "oauth_token=" + oauth_token + "&" +<br> "oauth_signature_method=" + "HMAC-SHA1" + "&" +<br> "oauth_signature=" + sig + "&" +<br> "oauth_timestamp=" + timeStamp + "&" +<br> "oauth_nonce=" + nonce + "&" +<br> "oauth_version=" + "1.0" + "&" +<br> "oauth_verifier=" + oauth_verifier;<br> Console .WriteLine( "Req: " + request_url);<br> Console .WriteLine( "--------------------------------------------------------" ); <br> // <br>Request = (HttpWebRequest) HttpWebRequest.Create(request_url);<br>Response = (HttpWebResponse)Request.GetResponse(); <br>Reader = new StreamReader(Response.GetResponseStream(), Encoding .GetEncoding(1251));<br>outline = Reader.ReadToEnd(); <br> Console .WriteLine( "Out: " + outline);<br> Console .WriteLine( "--------------------------------------------------------" );<br> // <br>words = outline.Split(delimiterChars);<br>oauth_token = words[1]; <br>oauth_token_secret = words[3];<br> string user_id = words[5];<br> string screen_name = words[7];<br> // <br> Console .WriteLine( "oauth_token = " + oauth_token); <br> Console .WriteLine( "oauth_token_secret = " + oauth_token_secret); <br> Console .WriteLine( "user_id = " + user_id);<br> Console .WriteLine( "screen_name = " + screen_name); <br><br> * This source code was highlighted with Source Code Highlighter .







यह सभी आवश्यक डेटा प्राप्त है। ट्विटर एपीआई के साथ संचार भविष्य के लेख में चर्चा की जाएगी। मानों के साथ लाइनों का आउटपुट प्राधिकरण प्रक्रिया की दृश्यता और इसकी समझ में सुधार करने के लिए बना है। हाइफ़न के साथ लाइनें डाली जाती हैं ताकि आउटपुट टेक्स्ट आंखों में एक ठोस रेखा में विलय न हो।



UPD: लेखक को फिर भी अपने दम पर हैबर को निमंत्रण मिला। स्वागत है आपका स्वागत है!



All Articles