public string GetAuthorization(OAuthToken tokens, string method, Uri uri, string data)
{
var headers = new Dictionary<string, string>() {
{ "oauth_consumer_key", config.ConsumerKey },
{ "oauth_nonce", MakeNonce () },
{ "oauth_signature_method", "HMAC-SHA1" },
{ "oauth_timestamp", MakeTimestamp () },
{ "oauth_token", tokens.Token },
{ "oauth_version", "1.0" }};
var signatureHeaders = new Dictionary<string,string> (headers);
// Add the data and URL query string to the copy of the headers for computing the signature
if (data != null && !string.IsNullOrEmpty (data)){
var parsed = HttpUtility.ParseQueryString (data);
foreach (string k in parsed.Keys){
signatureHeaders.Add (k, OAuth.PercentEncode (parsed [k]));
}
}
var nvc = HttpUtility.ParseQueryString (uri.Query);
foreach (string key in nvc){
if (key != null)
signatureHeaders.Add (key, OAuth.PercentEncode (nvc [key]));
}
string signature = MakeSignature (method, uri.GetLeftPart (UriPartial.Path), signatureHeaders);
string compositeSigningKey = MakeSigningKey (config.ConsumerSecret, tokens.TokenSecret);
string oauth_signature = MakeOAuthSignature (compositeSigningKey, signature);
headers.Add ("oauth_signature", OAuth.PercentEncode (oauth_signature));
return HeadersToOAuth (headers);
}