Blame view

Yi.Abp.Net8/framework/Yi.Framework.WeChat.MiniProgram/Token/DefaultMinProgramToken.cs 1.34 KB
515fceeb   “wangming”   框架初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  using System.Net.Http.Json;
  using Microsoft.Extensions.Options;
  using Yi.Framework.Core.Extensions;
  using Yi.Framework.WeChat.MiniProgram.HttpModels;
  
  namespace Yi.Framework.WeChat.MiniProgram.Token;
  
  internal class DefaultMinProgramToken:IMiniProgramToken
  {
      private const string Url = "https://api.weixin.qq.com/cgi-bin/token";
      private WeChatMiniProgramOptions _options;
      public DefaultMinProgramToken(IOptions<WeChatMiniProgramOptions> options)
      {
          _options = options.Value;
      }
      public async Task<string> GetTokenAsync()
      {
          var token = await this.GetAccessToken();
          return token.access_token;
      }
      public async Task<AccessTokenResponse> GetAccessToken()
      {
          var req = new AccessTokenRequest();
          req.appid = _options.AppID;
          req.secret = _options.AppSecret;
          req.grant_type = "client_credential";
          using (HttpClient httpClient = new HttpClient())
          {
              string queryString = req.ToQueryString();
              var builder = new UriBuilder(Url);
              builder.Query = queryString;
              HttpResponseMessage response = await httpClient.GetAsync(builder.ToString());
  
              response.EnsureSuccessStatusCode();
  
              var responseBody = await response.Content.ReadFromJsonAsync<AccessTokenResponse>();
              return responseBody;
          }
      }
  }