public void BuildBaseString_TwitterExample() { NameValueCollection collectedParameters = new NameValueCollection(); collectedParameters.Add("oauth_consumer_key", "GDdmIQH6jhtmLUypg82g"); collectedParameters.Add("oauth_signature_method", SigningSupport.HMAC_SHA1_SIGNATURE_NAME); collectedParameters.Add("oauth_timestamp", 2468013579L.ToString()); collectedParameters.Add("oauth_nonce", 1357924680.ToString()); collectedParameters.Add("oauth_version", "1.0"); collectedParameters.Add("oauth_callback", "http://localhost:3005/the_dance/process_callback?service_provider_id=11"); String baseString = SigningSupport.BuildBaseString(HttpMethod.POST, "https://api.twitter.com/oauth/request_token", collectedParameters); String[] baseStringParts = baseString.Split('&'); Assert.AreEqual(3, baseStringParts.Length); Assert.AreEqual("POST", baseStringParts[0]); Assert.AreEqual("https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token", baseStringParts[1]); String[] parameterParts = baseStringParts[2].Split(new string[] { "%26" }, StringSplitOptions.None); Assert.AreEqual(6, parameterParts.Length); Assert.AreEqual("oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252Fthe_dance%252Fprocess_callback%253Fservice_provider_id%253D11", parameterParts[0]); Assert.AreEqual("oauth_consumer_key%3DGDdmIQH6jhtmLUypg82g", parameterParts[1]); Assert.AreEqual("oauth_nonce%3D1357924680", parameterParts[2]); Assert.AreEqual("oauth_signature_method%3DHMAC-SHA1", parameterParts[3]); Assert.AreEqual("oauth_timestamp%3D2468013579", parameterParts[4]); Assert.AreEqual("oauth_version%3D1.0", parameterParts[5]); }
/// <summary> /// Creates an OAuth 1.0 protected resource request interceptor. /// </summary> /// <param name="consumerKey">The application's consumer key.</param> /// <param name="consumerSecret">The application's consumer secret.</param> /// <param name="accessToken">The access token.</param> /// <param name="accessTokenSecret">The access token secret.</param> public OAuth1RequestInterceptor(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret) { this.consumerKey = consumerKey; this.consumerSecret = consumerSecret; this.accessToken = accessToken; this.accessTokenSecret = accessTokenSecret; this.signingSupport = new SigningSupport(); }
public void BuildAuthorizationHeaderValue_Request() { SigningSupport signingUtils = new SigningSupport(); signingUtils.TimestampGenerator = new MockTimestampGenerator(123456789, 987654321); Uri uri = new Uri(String.Format("http://example.com/request?b5={0}&a3=a&{1}=&a2={2}", Uri.EscapeDataString("=%3D"), Uri.EscapeDataString("c@"), Uri.EscapeDataString("r b"))); HttpHeaders headers = new HttpHeaders(); headers.ContentType = MediaType.APPLICATION_FORM_URLENCODED; string authorizationHeader = signingUtils.BuildAuthorizationHeaderValue(uri, HttpMethod.POST, headers, stream => { byte[] byteData = Encoding.UTF8.GetBytes("c2&a3=2+q"); stream.Write(byteData, 0, byteData.Length); }, "9djdj82h48djs9d2", "consumer_secret", "kkk9d7dh3k39sjv7", "token_secret"); AssertAuthorizationHeader(authorizationHeader, "%2B8iwuQbJ%2Fa46KYDAFQlzPerVGYk%3D"); }
public void BuildAuthorizationHeaderValue_TokenRequest() { SigningSupport signingUtils = new SigningSupport(); signingUtils.TimestampGenerator = new MockTimestampGenerator(123456789, 987654321); IDictionary<string, string> tokenParameters = new Dictionary<string, string>(1); tokenParameters.Add("oauth_token", "kkk9d7dh3k39sjv7"); NameValueCollection additionalParameters = new NameValueCollection(); additionalParameters.Add("c2", ""); // body parameter additionalParameters.Add("a3", "2 q"); // body parameter additionalParameters.Add("b5", "=%3D"); // query parameter additionalParameters.Add("a3", "a"); // query parameter additionalParameters.Add("c@", ""); // query parameter additionalParameters.Add("a2", "r b"); // query parameter string authorizationHeader = signingUtils.BuildAuthorizationHeaderValue(new Uri("http://example.com/request"), tokenParameters, additionalParameters, "9djdj82h48djs9d2", "consumer_secret", "token_secret"); AssertAuthorizationHeader(authorizationHeader, "%2B8iwuQbJ%2Fa46KYDAFQlzPerVGYk%3D"); }
/// <summary> /// Creates an OAuth1Template. /// </summary> /// <param name="consumerKey">The application's consumer key.</param> /// <param name="consumerSecret">The application's consumer secret.</param> /// <param name="requestTokenUrl">The request token URL.</param> /// <param name="authorizeUrl">The authorize URL.</param> /// <param name="authenticateUrl">The authenticate URL.</param> /// <param name="accessTokenUrl">The access token URL.</param> /// <param name="version">The version of OAuth 1, either 10 or 10a.</param> public OAuth1Template(string consumerKey, string consumerSecret, string requestTokenUrl, string authorizeUrl, string authenticateUrl, string accessTokenUrl, OAuth1Version version) { ArgumentUtils.AssertNotNull(consumerKey, "consumerKey"); ArgumentUtils.AssertNotNull(consumerSecret, "consumerSecret"); ArgumentUtils.AssertNotNull(requestTokenUrl, "requestTokenUrl"); ArgumentUtils.AssertNotNull(authorizeUrl, "authorizeUrl"); ArgumentUtils.AssertNotNull(accessTokenUrl, "accessTokenUrl"); this.consumerKey = consumerKey; this.consumerSecret = consumerSecret; this.requestTokenUrl = new Uri(requestTokenUrl); this.authorizeUrl = authorizeUrl; this.authenticateUrl = authenticateUrl; this.accessTokenUrl = new Uri(accessTokenUrl); this.version = version; this.restTemplate = this.CreateRestTemplate(); this.signingSupport = new SigningSupport(); }
public void BuildAuthorizationHeaderValue_TokenRequest() { SigningSupport signingUtils = new SigningSupport(); signingUtils.TimestampGenerator = new MockTimestampGenerator(123456789, 987654321); IDictionary <string, string> tokenParameters = new Dictionary <string, string>(1); tokenParameters.Add("oauth_token", "kkk9d7dh3k39sjv7"); NameValueCollection additionalParameters = new NameValueCollection(); additionalParameters.Add("c2", ""); // body parameter additionalParameters.Add("a3", "2 q"); // body parameter additionalParameters.Add("b5", "=%3D"); // query parameter additionalParameters.Add("a3", "a"); // query parameter additionalParameters.Add("c@", ""); // query parameter additionalParameters.Add("a2", "r b"); // query parameter string authorizationHeader = signingUtils.BuildAuthorizationHeaderValue(new Uri("http://example.com/request"), tokenParameters, additionalParameters, "9djdj82h48djs9d2", "consumer_secret", "token_secret"); AssertAuthorizationHeader(authorizationHeader, "%2B8iwuQbJ%2Fa46KYDAFQlzPerVGYk%3D"); }
public void BuildBaseString_SpecificationExample() { NameValueCollection collectedParameters = new NameValueCollection(); collectedParameters.Add("b5", "=%3D"); collectedParameters.Add("a3", "a"); collectedParameters.Add("c@", ""); collectedParameters.Add("a2", "r b"); collectedParameters.Add("c2", ""); collectedParameters.Add("a3", "2 q"); collectedParameters.Add("oauth_consumer_key", "9djdj82h48djs9d2"); collectedParameters.Add("oauth_signature_method", SigningSupport.HMAC_SHA1_SIGNATURE_NAME); collectedParameters.Add("oauth_timestamp", 2468013579L.ToString()); collectedParameters.Add("oauth_nonce", 1357924680.ToString()); collectedParameters.Add("oauth_version", "1.0"); collectedParameters.Add("oauth_token", "kkk9d7dh3k39sjv7"); string baseString = SigningSupport.BuildBaseString(HttpMethod.POST, "http://example.com/request", collectedParameters); string[] baseStringParts = baseString.Split('&'); Assert.AreEqual(3, baseStringParts.Length); Assert.AreEqual("POST", baseStringParts[0]); Assert.AreEqual("http%3A%2F%2Fexample.com%2Frequest", baseStringParts[1]); String[] parameterParts = baseStringParts[2].Split(new string[] { "%26" }, StringSplitOptions.None); Assert.AreEqual(12, parameterParts.Length); Assert.AreEqual("a2%3Dr%2520b", parameterParts[0]); Assert.AreEqual("a3%3D2%2520q", parameterParts[1]); Assert.AreEqual("a3%3Da", parameterParts[2]); Assert.AreEqual("b5%3D%253D%25253D", parameterParts[3]); Assert.AreEqual("c%2540%3D", parameterParts[4]); Assert.AreEqual("c2%3D", parameterParts[5]); Assert.AreEqual("oauth_consumer_key%3D9djdj82h48djs9d2", parameterParts[6]); Assert.AreEqual("oauth_nonce%3D1357924680", parameterParts[7]); Assert.AreEqual("oauth_signature_method%3DHMAC-SHA1", parameterParts[8]); Assert.AreEqual("oauth_timestamp%3D2468013579", parameterParts[9]); Assert.AreEqual("oauth_token%3Dkkk9d7dh3k39sjv7", parameterParts[10]); Assert.AreEqual("oauth_version%3D1.0", parameterParts[11]); }