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 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; }
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); }
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); }
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; }
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 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; }
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; }
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); }