Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
        }
Exemple #4
0
 public OAuthAccessToken GetAccessToken(OAuthRequestToken requestToken, string verifier)
 {
     return GetAccessTokenAsync(requestToken, verifier,CancellationToken.None).Result;
 }
Exemple #5
0
        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;
        }
Exemple #6
0
 public string Authorize(string userName, string password, OAuthRequestToken requestToken, CancellationToken cancelToken)
 {
     return AuthorizeAsync(userName, password, requestToken,  cancelToken).Result;
 }
Exemple #7
0
 public OAuthAccessToken GetAccessToken(OAuthRequestToken requestToken, string verifier)
 {
     return(GetAccessTokenAsync(requestToken, verifier, CancellationToken.None).Result);
 }
Exemple #8
0
 public string Authorize(string userName, string password, OAuthRequestToken requestToken, CancellationToken cancelToken)
 {
     return(AuthorizeAsync(userName, password, requestToken, cancelToken).Result);
 }