diff --git a/24Hour/Program.cs b/24Hour/Program.cs index 6a24efa..e992b0c 100644 --- a/24Hour/Program.cs +++ b/24Hour/Program.cs @@ -16,9 +16,10 @@ using Quartz.Spi; using Microsoft.IdentityModel.Logging; using System.Collections.Specialized; using System.Runtime.InteropServices; - +using _24Hour; + #region builder - + var builder = WebApplication.CreateBuilder(args); var Configuration = builder.Configuration; @@ -152,6 +153,12 @@ builder.Services.AddAuthentication(options => }).AddScheme(nameof(ResponseAuthenticationHandler), o => { }); + +builder.Services.AddHttpClient(opt => +{ + opt.BaseAddress = new Uri("https://api.weixin.qq.com/sns"); +}); + //builder.Services.AddAuthorization(); builder.Services.AddHttpContextAccessor(); builder.Services.AddScoped(); diff --git a/24Hour/WechatMessagerClient.cs b/24Hour/WechatMessagerClient.cs new file mode 100644 index 0000000..092837f --- /dev/null +++ b/24Hour/WechatMessagerClient.cs @@ -0,0 +1,57 @@ +using com.sun.org.apache.bcel.@internal.generic; +using com.sun.xml.@internal.xsom; +using Elight.Utility; +using Elight.Utility.Code; +using Newtonsoft.Json; + +namespace _24Hour +{ + + public class WechatMessagerClient + { + private readonly HttpClient httpCliet; + public WechatMessagerClient(HttpClient _httpCliet) + { + this.httpCliet = _httpCliet; + + httpCliet.DefaultRequestHeaders.Add("Accept", "application/json"); + httpCliet.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample"); + httpCliet.DefaultRequestHeaders.ConnectionClose = true; + } + + /// + /// 小程序AppID + /// + private const string appid = "wx48108a0c98a3dab0"; + /// + /// 小程序secretID + /// + private const string secid = "e752e4fba67526eca21313a18c96a58f"; + public async Task GetOpenId(string code) + { + var ret = new Result(); + var reponse = await httpCliet.GetAsync($"/sns/jscode2session?appid={appid}&secret={secid}&js_code={code}&grant_type=authorization_code"); + var opendata = await reponse.EnsureSuccessStatusCode().Content.ReadAsStringAsync(); + var data = JsonConvert.DeserializeAnonymousType(opendata, new + { + openid = default(string), + session_key = default(string), + unionid = default(string), + errcode = default(int), + errmsg = default(string), + }); + if (data.errcode == 0) + { + ret.IsSucceed = true; + ret.result = data.openid; + } + else + { + ret.IsSucceed = false; + ret.Message = data.errmsg; + } + return ret; + } + + } +}