Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
 public void AppendOAuthHeader(WebRequest request, IDictionary<string, string> accessTokenParams, OAuthAccessToken accessToken)
 {
     if (!accessTokenParams.ContainsKey(Constants.OAuthToken))
         accessTokenParams.Add(Constants.OAuthToken, accessToken.Token);
     var oAuth = ConstructOAuthHeader(accessTokenParams, request.RequestUri.ToString(), request.Method, accessToken.Secret);
     request.Headers[HttpRequestHeader.Authorization] = oAuth;
 }
Ejemplo n.º 3
0
        protected virtual OAuthAccessToken ConvertToAccessTokenByRegex(string result)
        {
            OAuthAccessToken oauthAccessToken = null;

            if (!string.IsNullOrEmpty(result) &&
                (Regex.IsMatch(result, Constants.OAuth2AccessTokenPattern1) ||
                 Regex.IsMatch(result, Constants.OAuth2AccessTokenPattern2)))
            {
                var group = result.Contains("refresh_token") ?
                            Regex.Match(result, Constants.OAuth2AccessTokenPattern2) :
                            Regex.Match(result, Constants.OAuth2AccessTokenPattern1);

                var accessToken = group.Groups["token"].Value;
                if (accessToken != null)
                {
                    oauthAccessToken           = new OAuthAccessToken();
                    oauthAccessToken.ExpiresIn = Convert.ToInt32(group.Groups["expires"].Value);
                    oauthAccessToken.Token     = group.Groups["token"].Value;
                    oauthAccessToken.UserID    = group.Groups["uid"].Value;
                }
            }
            return(oauthAccessToken);
        }
Ejemplo n.º 4
0
        public async Task <OAuthAccessToken> GetOAuthAccessTokenAsync(System.Threading.CancellationToken cancelToken)
        {
            var helper = new OAuth2Helper(OAuthSettings);
            OAuthAccessToken accessToken = null;

            switch (GrantType)
            {
            case GrantType.AuthorizationCode:
                accessToken = await helper.GetAccessTokenByCodeAsync(AuthorizationCode);

                break;

            case GrantType.Password:
                accessToken = await helper.GetAccessTokenByPasswordAsync(Passport, Password);

                break;

            default:
                accessToken = await helper.LoginAsync(Passport, Password, cancelToken);

                break;
            }
            return(accessToken);
        }
Ejemplo n.º 5
0
        protected virtual OAuthAccessToken ConvertToAccessTokenByRegex(string result)
        {
            OAuthAccessToken oauthAccessToken = null;
            if (!string.IsNullOrEmpty(result) &&
                (Regex.IsMatch(result, Constants.OAuth2AccessTokenPattern1) ||
                 Regex.IsMatch(result, Constants.OAuth2AccessTokenPattern2)))
            {
                var group = result.Contains("refresh_token") ?
                    Regex.Match(result, Constants.OAuth2AccessTokenPattern2) :
                    Regex.Match(result, Constants.OAuth2AccessTokenPattern1);

                var accessToken = group.Groups["token"].Value;
                if (accessToken != null)
                {
                    oauthAccessToken = new OAuthAccessToken();
                    oauthAccessToken.ExpiresIn = Convert.ToInt32(group.Groups["expires"].Value);
                    oauthAccessToken.Token = group.Groups["token"].Value;
                    oauthAccessToken.UserID = group.Groups["uid"].Value;
                }
            }
            return oauthAccessToken;
        }
Ejemplo n.º 6
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;
        }
Ejemplo n.º 7
0
        public string PreparePostBody(string url, IDictionary<string, string> customPostParams, OAuthAccessToken accessToken)
        {
            var parameters = GetOAuthBasicParams();
            parameters.Add(Constants.OAuthToken, accessToken.Token);

            if (null != customPostParams)
            {
                parameters.Concat(customPostParams);
            }

            var postBody = ConstructPostBody(parameters, url, accessToken.Secret);
            return postBody;
        }
Ejemplo n.º 8
0
        public void AppendOAuthHeader(WebRequest request, IDictionary <string, string> accessTokenParams, OAuthAccessToken accessToken)
        {
            if (!accessTokenParams.ContainsKey(Constants.OAuthToken))
            {
                accessTokenParams.Add(Constants.OAuthToken, accessToken.Token);
            }
            var oAuth = ConstructOAuthHeader(accessTokenParams, request.RequestUri.ToString(), request.Method, accessToken.Secret);

            request.Headers[HttpRequestHeader.Authorization] = oAuth;
        }
Ejemplo n.º 9
0
        public string PreparePostBody(string url, IDictionary <string, string> customPostParams, OAuthAccessToken accessToken)
        {
            var parameters = GetOAuthBasicParams();

            parameters.Add(Constants.OAuthToken, accessToken.Token);

            if (null != customPostParams)
            {
                parameters.Concat(customPostParams);
            }

            var postBody = ConstructPostBody(parameters, url, accessToken.Secret);

            return(postBody);
        }