ASP.NET代码无法获取OAuth2令牌,但PostMan可正常获取
问题:C#请求OAuth令牌无响应,但PostMan可正常运行
我尝试简化代码以获取Web API请求所需的OAuth令牌。在PostMan中,无论是将令牌请求作为主请求的“Authorization”标签部分,还是作为独立请求,均能正常运行。但在C#中,代码始终无响应。我有另一套结构相同的C#代码可针对其他服务正常运行。
问题C#代码
public static async Task<string> GetAccessTokenAsync() { try { using (var client = new HttpClient()) { client.BaseAddress = new Uri(AuthTokenUrl); var request = new FormUrlEncodedContent(new Dictionary<string, string> { ["grant_type"] = "client_credentials", ["client_id"] = AuthClientId, ["client_secret"] = AuthClientSecret, ["scope"] = AuthScope }); var resp = await client.PostAsync("", request); if (resp.IsSuccessStatusCode) { var content = await resp.Content.ReadAsAsync<AccessTokenModel>(); return content.access_token; } Log.Error("API Token Request unsuccessful. Status code: {code}; Reason: {reason}, {@request}", resp.StatusCode, resp.ReasonPhrase, request); return null; } } catch (Exception ex) { Log.Error(ex, "Error while retrieving auth token for API."); return null; } }
PostMan请求截图

可正常运行的C#示例代码
public static async System.Threading.Tasks.Task<string> GetOktaToken() { using (var oktaClient = new HttpClient()) { oktaClient.BaseAddress = new Uri(AuthUrl); var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string,string>("grant_type", "client_credentials") , new KeyValuePair<string, string>("scope", "scope.read") , new KeyValuePair<string, string>("client_id", ClientId) , new KeyValuePair<string, string>("client_secret", ClientSecret) }); var resp = await oktaClient.PostAsync(string.Empty, content); var oktaresp = await resp.Content.ReadAsAsync<OktaResponse>(); return oktaresp.access_token; } }
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

