public async Task <OAuthAccessToken> GetAccessTokenAsync(OAuthRequestToken requestToken, string verifier, CancellationToken cancelToken) { var accessTokenParams = GetOAuthBasicParams(); var headers = accessTokenParams.ToDictionary(kv => kv.Key, kv => kv.Value); headers.Add(Constants.OAuthToken, requestToken.Token); headers.Add(Constants.OAuthVerifier, verifier); var oAuthQuery = ConstructOAuthQueryString(headers, "GET", Settings.AccessTokenUrl, requestToken.Secret); var url = Settings.AccessTokenUrl + "?" + oAuthQuery; var request = WebRequest.Create(url); cancelToken.ThrowIfCancellationRequested(); var result = await request.GetStringAsync(cancelToken); var accessTokenMatch = Regex.Match(result, Constants.RetrieveAccessTokenPattern, RegexOptions.IgnoreCase); if (!accessTokenMatch.Success) { throw new Exception("Failed to retrieve access token."); } var accessToken = accessTokenMatch.Groups[1].Value; var accessTokenSecret = accessTokenMatch.Groups[2].Value; var userID = accessTokenMatch.Groups[4].Value; var oauthAccessToken = new OAuthAccessToken() { Token = accessToken, Secret = accessTokenSecret, UserID = userID }; return(oauthAccessToken); }
public async Task <string> AuthorizeAsync(string userName, string password, OAuthRequestToken requestToken, CancellationToken cancelToken) { if (requestToken == null) { throw new Exception("Request token is invalid."); } var queryStringParams = new Dictionary <string, string>(); queryStringParams.Add(Constants.OAuthToken, requestToken.Token); queryStringParams.Add("userId", HttpEncoder.UrlEncode(userName)); queryStringParams.Add("passwd", HttpEncoder.UrlEncode(password)); queryStringParams.Add(Constants.OAuthCallback, "xml"); var authorizeUrl = Settings.AuthorizeUrl + "?"; foreach (var kv in queryStringParams) { authorizeUrl += string.Format("{0}={1}&", kv.Key, kv.Value); } authorizeUrl = authorizeUrl.TrimEnd('&'); var request = WebRequest.Create(authorizeUrl); cancelToken.ThrowIfCancellationRequested(); var result = await request.GetStringAsync(cancelToken); var match = Regex.Match(result, Constants.RetrieveAuthorizationCodePattern, RegexOptions.CultureInvariant); if (!match.Success) { throw new Exception("Invalid user name or password."); } var verifier = match.Groups[1].Value; return(verifier); }
public async Task<OAuthAccessToken> GetAccessTokenAsync(OAuthRequestToken requestToken, string verifier, CancellationToken cancelToken) { var accessTokenParams = GetOAuthBasicParams(); var headers = accessTokenParams.ToDictionary(kv => kv.Key, kv => kv.Value); headers.Add(Constants.OAuthToken, requestToken.Token); headers.Add(Constants.OAuthVerifier, verifier); var oAuthQuery = ConstructOAuthQueryString(headers, "GET", Settings.AccessTokenUrl, requestToken.Secret); var url = Settings.AccessTokenUrl + "?" + oAuthQuery; var request = WebRequest.Create(url); cancelToken.ThrowIfCancellationRequested(); var result = await request.GetStringAsync(cancelToken); var accessTokenMatch = Regex.Match(result, Constants.RetrieveAccessTokenPattern, RegexOptions.IgnoreCase); if (!accessTokenMatch.Success) throw new Exception("Failed to retrieve access token."); var accessToken = accessTokenMatch.Groups[1].Value; var accessTokenSecret = accessTokenMatch.Groups[2].Value; var userID = accessTokenMatch.Groups[4].Value; var oauthAccessToken = new OAuthAccessToken() { Token = accessToken, Secret = accessTokenSecret, UserID = userID }; return oauthAccessToken; }
public OAuthAccessToken GetAccessToken(OAuthRequestToken requestToken, string verifier) { return GetAccessTokenAsync(requestToken, verifier,CancellationToken.None).Result; }
public async Task<string> AuthorizeAsync(string userName, string password, OAuthRequestToken requestToken, CancellationToken cancelToken) { if (requestToken == null) throw new Exception("Request token is invalid."); var queryStringParams = new Dictionary<string, string>(); queryStringParams.Add(Constants.OAuthToken, requestToken.Token); queryStringParams.Add("userId", HttpEncoder.UrlEncode(userName)); queryStringParams.Add("passwd", HttpEncoder.UrlEncode(password)); queryStringParams.Add(Constants.OAuthCallback, "xml"); var authorizeUrl = Settings.AuthorizeUrl + "?"; foreach (var kv in queryStringParams) authorizeUrl += string.Format("{0}={1}&", kv.Key, kv.Value); authorizeUrl = authorizeUrl.TrimEnd('&'); var request = WebRequest.Create(authorizeUrl); cancelToken.ThrowIfCancellationRequested(); var result = await request.GetStringAsync(cancelToken); var match = Regex.Match(result, Constants.RetrieveAuthorizationCodePattern, RegexOptions.CultureInvariant); if (!match.Success) throw new Exception("Invalid user name or password."); var verifier = match.Groups[1].Value; return verifier; }
public string Authorize(string userName, string password, OAuthRequestToken requestToken, CancellationToken cancelToken) { return AuthorizeAsync(userName, password, requestToken, cancelToken).Result; }
public OAuthAccessToken GetAccessToken(OAuthRequestToken requestToken, string verifier) { return(GetAccessTokenAsync(requestToken, verifier, CancellationToken.None).Result); }
public string Authorize(string userName, string password, OAuthRequestToken requestToken, CancellationToken cancelToken) { return(AuthorizeAsync(userName, password, requestToken, cancelToken).Result); }