· 6 years ago · Jan 19, 2019, 12:36 AM
1public void AcquireRequestToken(Action<bool> response)
2{
3
4 string oauth_nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
5
6 // build the signature
7 var headers = new Dictionary<string,string>()
8 {
9 { "oauth_consumer_key", _oAuthConfig.ConsumerKey },
10 { "oauth_nonce", oauth_nonce },
11 { "oauth_signature_method", "HMAC-SHA1" },
12 { "oauth_timestamp", MakeTimestamp() },
13 { "oauth_version", "1.0" },
14 { "oauth_callback", PercentEncode(_oAuthConfig.Callback) },
15 };
16
17 string signature = MakeSignature ("POST", _oAuthConfig.RequestTokenUrl, headers);
18 string compositeSigningKey = MakeSigningKey(_oAuthConfig.ConsumerSecret, null);
19 string oauth_signature = MakeOAuthSignature(compositeSigningKey, signature);
20
21 Uri fullUri = new Uri(_oAuthConfig.RequestTokenUrl);
22
23 var request = (HttpWebRequest)WebRequest.Create(fullUri);
24 request.Method = "POST";
25
26 request.Headers.Add("oauth_consumer_key", PercentEncode(_oAuthConfig.ConsumerKey));
27 request.Headers.Add("oauth_nonce", PercentEncode(oauth_nonce));
28 request.Headers.Add("oauth_signature_method", PercentEncode("HMAC-SHA1"));
29 request.Headers.Add("oauth_timestamp", PercentEncode(MakeTimestamp()));
30 request.Headers.Add("oauth_version", "1.0");
31 request.Headers.Add("oauth_callback", PercentEncode(_oAuthConfig.Callback));
32 request.Headers.Add("oauth_signature", PercentEncode(oauth_signature));
33
34 try
35 {
36
37 request.BeginGetResponse(new AsyncCallback(result =>
38 {
39 string contents = String.Empty;
40 HttpWebRequest theRequest = (HttpWebRequest)result.AsyncState;
41
42 if (theRequest != null)
43 {
44 try
45 {
46 HttpWebResponse theResponse = (HttpWebResponse)theRequest.EndGetResponse(result);
47
48 using (Stream stream = theResponse.GetResponseStream())
49 using (StreamReader reader = new StreamReader(stream))
50 {
51 contents = reader.ReadToEnd();
52 }
53
54 Dictionary<string, object> results = JsonConvert.DeserializeObject<Dictionary<string, object>>(contents);
55
56 _requestToken = (string)results ["oauth_token"];
57 _requestTokenSecret = (string)results ["oauth_token_secret"];
58
59 response(true);
60 }
61 catch (WebException e)
62 {
63 response(false);
64 }
65 }
66 else
67 {
68 response(false);
69 }
70 }), request);
71
72 }
73 catch (WebException e)
74 {
75 response(false);
76 }
77
78}
79
80public bool AcquireRequestToken()
81{
82 var headers = new Dictionary<string,string>()
83 {
84 { "oauth_callback", PercentEncode(_oAuthConfig.Callback) },
85 { "oauth_consumer_key", _oAuthConfig.ConsumerKey },
86 { "oauth_signature_method", "HMAC-SHA1" },
87 { "oauth_timestamp", MakeTimestamp() },
88 { "oauth_version", "1.0" }
89 };
90
91 string signature = MakeSignature ("POST", _oAuthConfig.RequestTokenUrl, headers);
92 string compositeSigningKey = MakeSigningKey(_oAuthConfig.ConsumerSecret, null);
93 string oauth_signature = MakeOAuthSignature(compositeSigningKey, signature);
94
95 var wc = new WebClient ();
96 headers.Add ("oauth_signature", PercentEncode(oauth_signature));
97 wc.Headers [HttpRequestHeader.Authorization] = HeadersToOAuth(headers);
98
99 try
100 {
101 var result = HttpUtility.ParseQueryString(wc.UploadString (new Uri(_oAuthConfig.RequestTokenUrl), ""));
102
103 if (result ["oauth_callback_confirmed"] != null)
104 {
105 _requestToken = result ["oauth_token"];
106 _requestTokenSecret = result ["oauth_token_secret"];
107
108 return true;
109 }
110 }
111 catch (Exception e)
112 {
113 return false;
114 }
115
116}
117
118Authorization: OAuth oauth_consumer_key="<the consumer key of your app>", oauth_nonce="<the nonce>", oauth_signature="<the signature>", oauth_signature_method="HMAC-SHA1", oauth_timestamp="<the timestamp>", oauth_token="<your token>", oauth_version="1.0"