You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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请求截图

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:03:25