public Task<OAuthToken> AcquireRequestToken()
{
var headers = new Dictionary<string,string> () {
{ "oauth_callback", PercentEncode (config.UrlCallback) },
{ "oauth_consumer_key", config.ConsumerKey },
{ "oauth_nonce", MakeNonce () },
{ "oauth_signature_method", "HMAC-SHA1" },
{ "oauth_timestamp", MakeTimestamp () },
{ "oauth_version", "1.0" }};
string signature = MakeSignature ("POST", RequestUrl, headers);
string compositeSigningKey = MakeSigningKey (config.ConsumerSecret, null);
string oauth_signature = MakeOAuthSignature (compositeSigningKey, signature);
var wc = new WebClient ();
headers.Add ("oauth_signature", OAuth.PercentEncode (oauth_signature));
wc.Headers [HttpRequestHeader.Authorization] = HeadersToOAuth (headers);
return Task<OAuthToken>.Factory.StartNew (() => {
try {
ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
ServicePointManager.Expect100Continue = false;
var result = HttpUtility.ParseQueryString (wc.UploadString (new Uri (RequestUrl), string.Empty));
OAuthToken token = new OAuthToken (result["oauth_token"], result["oauth_token_secret"]);
return token;
} catch (WebException e) {
Console.WriteLine ("Request token error");
Console.WriteLine (e.ToString ());
var x = e.Response.GetResponseStream ();
var j = new System.IO.StreamReader (x);
Console.WriteLine (j.ReadToEnd ());
throw e;
}
});
}