示例#1
0
        public Task SaveTokenAsync(AppConfig config, WeChatToken token)
        {
            var expireTime = DateTime.Now.AddSeconds(token.expires_in);
            var text       = $"{expireTime},{token.access_token},{token.expires_in}";
            var file       = $"{config.AppName}_{config.AppId}_{TOKN_FILE}";

            File.WriteAllText(file, text);
            return(Task.CompletedTask);
        }
        public async Task <WeChatToken> GetWechatToKen()
        {
            var Provider = _externalAuthConfiguration.Providers.FirstOrDefault(P => P.Name == ProviderName);
            var appid    = Provider.ClientId;
            var secret   = Provider.ClientSecret;

            try
            {
                var httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
                httpClient.Timeout = TimeSpan.FromMinutes(3);
                var    urlToken    = $"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={appid}&corpsecret={secret}";
                string ResultToken = await httpClient.GetStringAsync(urlToken);

                WeChatToken wX_Token = JsonConvert.DeserializeObject <WeChatToken>(ResultToken);
                return(wX_Token);
            }
            catch (Exception ex)
            {
                throw new UserFriendlyException("获取微信access_token失败" + ex.Message);
            }
        }
        public override async Task <ExternalAuthUserInfo> GetUserInfo(string Code)
        {
            // 1. 获取企业微信ToKen
            WeChatToken weChatToken = await this.GetWechatToKen();

            // 2. 获取用户信息
            WeChatUserInfo weChatUserInfo = await this.GetWechatUserId(Code, weChatToken.access_token);

            // 3. 通过获取的的微信用户UserId并判断是否存在自己的服务器中。
            WXUser wXUser = await _wXUserManager.FindByUserId(weChatUserInfo.UserId);

            var t = wXUser == null ? new ExternalAuthUserInfo() : new ExternalAuthUserInfo
            {
                EmailAddress = wXUser.Email,
                Surname      = wXUser.AbpUser.Surname,
                ProviderKey  = weChatUserInfo.UserId,
                Provider     = ProviderName,
                Name         = wXUser.AbpUser.Name
            };

            return(t);
        }
示例#4
0
 public WeChatTokenCacheItem(string appId, WeChatToken weChatToken)
 {
     AppId       = appId;
     WeChatToken = weChatToken;
 }
示例#5
0
 public Task SaveTokenAsync(AppConfig config, WeChatToken token)
 {
     tokens[config.AppId] = token;
     return(Task.CompletedTask);
 }