// // Used to authorize an HTTP request going to TwitPic // public static void AuthorizeTwitPic(AuthProvider provider, HttpWebRequest wc, string oauthToken, string oauthTokenSecret) { var headers = new Dictionary<string, string>() { { "oauth_consumer_key", provider.ConsumerKey }, { "oauth_nonce", MakeNonce () }, { "oauth_signature_method", "HMAC-SHA1" }, { "oauth_timestamp", MakeTimestamp () }, { "oauth_token", oauthToken }, { "oauth_version", "1.0" }, //{ "realm", "http://api.twitter.com" } }; string signurl = "http://api.twitter.com/1/account/verify_credentials.xml"; // The signature is not done against the *actual* url, it is done against the verify_credentials.json one string signature = MakeSignature("GET", signurl, headers); string compositeSigningKey = MakeSigningKey(provider.ConsumerSecret, oauthTokenSecret); string oauth_signature = MakeOAuthSignature(compositeSigningKey, signature); headers.Add("oauth_signature", OAuthUtils.PercentEncode(oauth_signature)); //Util.Log ("Headers: " + HeadersToOAuth (headers)); wc.Headers.Add("X-Verify-Credentials-Authorization", HeadersToOAuth(headers)); wc.Headers.Add("X-Auth-Service-Provider", signurl); }
// Constructor for standard OAuth public OAuthAuthorizer(AuthProvider provider) { this.provider = provider; }
// // Assign the result to the Authorization header, like this: // request.Headers [HttpRequestHeader.Authorization] = AuthorizeRequest (...) // public static string AuthorizeRequest(AuthProvider provider, string oauthToken, string oauthTokenSecret, string method, Uri uri, string data) { var headers = new Dictionary<string, string>() { { "oauth_consumer_key", provider.ConsumerKey }, { "oauth_nonce", MakeNonce () }, { "oauth_signature_method", "HMAC-SHA1" }, { "oauth_timestamp", MakeTimestamp () }, { "oauth_token", oauthToken }, { "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 && data != "") { var parsed = HttpUtility.ParseQueryString(data); foreach (string k in parsed.Keys) { signatureHeaders.Add(k, OAuthUtils.PercentEncode(parsed[k])); } } var nvc = HttpUtility.ParseQueryString(uri.Query); foreach (string key in nvc) { if (key != null) signatureHeaders.Add(key, OAuthUtils.PercentEncode(nvc[key])); } string signature = MakeSignature(method, uri.GetLeftPart(UriPartial.Path), signatureHeaders); string compositeSigningKey = MakeSigningKey(provider.ConsumerSecret, oauthTokenSecret); string oauth_signature = MakeOAuthSignature(compositeSigningKey, signature); headers.Add("oauth_signature", OAuthUtils.PercentEncode(oauth_signature)); return HeadersToOAuth(headers); }