public async Task <IActionResult> RequestToken([FromBody] dynamic oauthValue) { Uri endpoint = new Uri(requestTokenEndpoint); var tokens = (JsonElement)oauthValue; tokens.TryGetProperty("oauth_callback", out JsonElement oauthCallback); string authorizationHeader = _oauthHelper.GetAuthorizationHeader( endpoint, "POST", _twitterAuthKeys.ConsumerAPIKey, _twitterAuthKeys.ConsumerSecret, null, null, oauthCallback.ToString()); _client.DefaultRequestHeaders.Clear(); _client.DefaultRequestHeaders.Accept.Add(OAuth1Helper.GetMediaTypeHeader()); _client.DefaultRequestHeaders.Add("Authorization", authorizationHeader); var response = await _client.PostAsync(endpoint, null); if (response.IsSuccessStatusCode) { var responseContent = await response.Content.ReadAsStringAsync(); return(Ok(responseContent)); } else { var errorMsg = await response.Content.ReadAsStringAsync(); return(BadRequest(errorMsg)); } }
public async Task <TokenValidationResult> ValidateAccessTokenAsync(string token, string expectedScope = null) { Uri endpoint = new Uri(userInfoEndpoint); var tokenValues = OAuth1Helper.GetResponseValues(token); tokenValues.TryGetValue("oauth_token", out string oauthToken); tokenValues.TryGetValue("oauth_token_secret", out string oauthTokenSecret); string authorizationHeader = _oauthHelper.GetAuthorizationHeader( endpoint, "GET", _options.TwitterConsumerAPIKey, _options.TwitterConsumerSecret, oauthToken, oauthTokenSecret, null); _client.DefaultRequestHeaders.Clear(); _client.DefaultRequestHeaders.Accept.Add(OAuth1Helper.GetMediaTypeHeader()); _client.DefaultRequestHeaders.Add("Authorization", authorizationHeader); var response = await _client.GetAsync(endpoint); if (response.IsSuccessStatusCode) { var userInfo = JsonDocument.Parse(await response.Content.ReadAsStringAsync()); var claims = new List <Claim>(); claims.AddRange(userInfo.RootElement.EnumerateObject().Select(item => new Claim(item.Name, item.Value.ToString()))); return(new TokenValidationResult { IsError = false, Claims = claims }); } return(new TokenValidationResult { IsError = true, ErrorDescription = response.ReasonPhrase }); }