public bool WriteAccessToken(string clientId, string prefix, AccessTokenBag accessTokenInfo)
        {
            var token = _db.VendAccessTokens.FirstOrDefault(x => x.Prefix.Equals(prefix));

            if (token != null)
            {
                //update
                token.ExpiresIn        = accessTokenInfo.ExpiresIn;
                token.Expires          = accessTokenInfo.Expires;
                token.AccessToken      = accessTokenInfo.AccessToken;
                token.RefreshToken     = accessTokenInfo.RefreshToken;
                token.TokenType        = accessTokenInfo.TokenType;
                _db.Entry(token).State = System.Data.Entity.EntityState.Modified;
            }
            else
            {
                //new
                token = new VendAccessToken()
                {
                    Prefix       = prefix,
                    ExpiresIn    = accessTokenInfo.ExpiresIn,
                    Expires      = accessTokenInfo.Expires,
                    AccessToken  = accessTokenInfo.AccessToken,
                    RefreshToken = accessTokenInfo.RefreshToken,
                    TokenType    = accessTokenInfo.TokenType
                };
                _db.VendAccessTokens.Add(token);
            }

            return(_db.SaveChanges() == 1);
        }
예제 #2
0
 /// <summary>
 /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token,
 /// </summary>
 /// <param name="corpId"></param>
 /// <param name="corpSecret"></param>
 public static void Register(string corpId, string corpSecret)
 {
     AccessTokenCollection[corpId + "_" + corpSecret] = new AccessTokenBag()
     {
         CorpId      = corpId,
         CorpSecret  = corpSecret,
         ExpireTime  = DateTime.MinValue,
         TokenResult = new AccessTokenResult()
     };
 }
        public void RemoveFromCache(string key)
        {
            // _cache.Remove(key);
            // DeleteItem(key);

            var keys = key.Split("_".ToCharArray());

            AccessTokenBag parameters = new AccessTokenBag {
                CorpId = keys[0], CorpSecret = keys[1]
            };

            Update(key, parameters);
        }
예제 #4
0
 public WeixinWorkException(string message, AccessTokenBag accessTokenBag = null, Exception inner = null)
     : base(message, inner)
 {
     AccessTokenBag = accessTokenBag;
 }
예제 #5
0
        public async Task <IActionResult> OnPostAccessTokenStatusAsync([FromBody] int[] ids)
        {
            var data          = new List <AccessTokenData>();
            var allMpAccounts = await _mpAccountService.GetFullListAsync(z => true);

            foreach (var id in ids)
            {
                var mpAccount = allMpAccounts.FirstOrDefault(z => z.Id == id);
                if (mpAccount == null)
                {
                    continue;
                }
                var            appId       = mpAccount.AppId;
                string         status      = null;
                double         leftSeconds = 0;
                AccessTokenBag bag         = null;
                if (!appId.IsNullOrEmpty())
                {
                    if (await AccessTokenContainer.CheckRegisteredAsync(appId))
                    {
                        bag = await AccessTokenContainer.TryGetItemAsync(appId);

                        if (bag.AccessTokenResult != null && !bag.AccessTokenResult.access_token.IsNullOrEmpty())
                        {
                            leftSeconds = (bag.AccessTokenExpireTime - SystemTime.Now).TotalSeconds;
                            if (leftSeconds > 9999)
                            {
                                leftSeconds = 0;
                                status      = "未启动";
                            }
                            else if (leftSeconds > 0)
                            {
                                status = "有效";
                            }
                            else //leftSeconds <= 0
                            {
                                leftSeconds = 0;
                                status      = "已过期";
                            }
                        }
                        else
                        {
                            status = "未启动";
                        }
                    }
                    else
                    {
                        status = "未注册";
                    }
                }
                else
                {
                    status = "AppId无效";
                }

                var totalSeconds = bag?.AccessTokenResult.expires_in ?? 0;
                var leftPercent  = bag?.AccessTokenResult != null && totalSeconds != 0 ? Math.Round(leftSeconds / bag.AccessTokenResult.expires_in * 100, 1) : 0;
                data.Add(new AccessTokenData()
                {
                    Id           = id,
                    AppId        = appId,
                    Status       = status,
                    LeftPercent  = leftPercent,
                    TotalSeconds = totalSeconds,
                });
            }
            return(Ok(data));
        }
예제 #6
0
 public WeixinQyException(string message, AccessTokenBag accessTokenBag = null, Exception inner=null)
     : base(message, inner)
 {
     AccessTokenBag = accessTokenBag;
 }
 public void InsertToCache(string key, AccessTokenBag value)
 {
     _cache[key] = value;
 }
 public void Update(string key, AccessTokenBag value)
 {
     _cache[key] = value;
 }