VS2015 正式版中为什么没有了函数前面引用提示了?

本文介绍了一个使用OAuth2.0进行身份验证的具体实现案例。通过HttpClient发送POST请求到指定API接口获取访问令牌(access_token),并展示了如何设置认证头部及处理响应结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 HttpClient _httpClient = new HttpClient();
            var clientId = Config.GetValue("AuthUser");
            var clientSecret = Config.GetValue("AuthPass");

            var apiHost = Config.GetValue("ApiHost");
            _httpClient.BaseAddress = new Uri(apiHost);

            var parameters = new Dictionary<string, string>();
            parameters.Add("grant_type", "password");
            parameters.Add("username", account);
            parameters.Add("password", password);

            _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                "Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(clientId + ":" + clientSecret))
                );

            var response = await _httpClient.PostAsync("/token", new FormUrlEncodedContent(parameters));
            var responseValue = await response.Content.ReadAsStringAsync();
            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var access_token = JObject.Parse(responseValue)["access_token"].Value<string>();
                return new TokenResult() { Message = "ok", access_token = access_token };
                //return JObject.Parse(responseValue)["access_token"].Value<string>();
            }
            else
            {
                var modelstate = JObject.Parse(responseValue)["ModelState"][0].Value<string>();
                return new TokenResult() { Message = modelstate };
            }

            //string url = Config.GetValue("ApiHost") + "/token";
            ////设置HttpClientHandler的AutomaticDecompression
            //var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
            ////创建HttpClient(注意传入HttpClientHandler)
            //using (var http = new HttpClient(handler))
            //{
            //    //使用FormUrlEncodedContent做HttpContent
            //    var content = new FormUrlEncodedContent(new Dictionary<string, string>()
            //    {
            //        {"grant_type", "password"},//键名必须为空
            //        { "username", account},
            //        {"password", password },
            //     });

            //    //await异步等待回应

            //    var response = await http.PostAsync(url, content);
            //    //确保HTTP成功状态值
            //    response.EnsureSuccessStatusCode();
            //    //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
            //    var responseValue = await response.Content.ReadAsStringAsync();
            //    if (response.StatusCode == System.Net.HttpStatusCode.OK)
            //    {
            //        return JObject.Parse(responseValue)["access_token"].Value<string>();
            //    }
            //    else
            //    {
            //        return string.Empty;
            //    }
            //}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值