Exemple #1
0
        /// <summary>
        /// 获取可用AccessTokenResult对象
        /// </summary>
        /// <param name="clientId"></param>
        /// <param name="getNewToken">是否强制重新获取新的Token</param>
        /// <returns></returns>
        public static AccessTokenResult GetAccessTokenResult(string clientId, bool getNewToken = false, SessionType sessionType = SessionType.Prod)
        {
            if (!CheckRegistered(clientId))
            {
                throw new UnRegisterClientIdException(clientId, string.Format("此clientId({0})尚未注册,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!", clientId));
            }

            var accessTokenBag = TryGetItem(clientId);

            using (Cache.BeginCacheLock(LockResourceName, clientId))//同步锁
            {
                if (getNewToken || accessTokenBag.AccessTokenExpireTime <= DateTime.Now)
                {
                    //已过期,重新获取
                    //accessTokenBag.AccessTokenResult = CommonApi.GetToken(accessTokenBag.clientId, accessTokenBag.clientSecret);
                    //accessTokenBag.AccessTokenExpireTime = ApiUtility.GetExpireTime(accessTokenBag.AccessTokenResult.expires_in);

                    accessTokenBag.AccessTokenResult     = CommonApi.GetAccessToken(accessTokenBag.ClientId, accessTokenBag.ClientSecret, accessTokenBag.PreAuthCode, accessTokenBag.RedirectUri, sessionType);
                    accessTokenBag.AccessTokenExpireTime = ApiUtility.GetExpireTime(accessTokenBag.AccessTokenResult.data.expires_in);
                }
            }
            return(accessTokenBag.AccessTokenResult);
        }
Exemple #2
0
 public static AccessTokenJsonResult GetAccessToken(string corpid, string corpsecret)
 {
     return(ApiHelper.Get <AccessTokenJsonResult>(CommonApi.GetAccessToken(corpid, corpsecret)));
 }
Exemple #3
0
        private static AccessTokenJsonResult GetAccessTokenResult(string key, bool getNewToken = false)
        {
            if (!AccessTokenCollection.ContainsKey(key))
            {
                throw new Exception(string.Format("企业号{0}尚未在代码里注册!", key));
            }
            AccessTokenBag accessTokenBag = AccessTokenCollection[key];

            //用户选择重新获取或者token已经过期
            if (getNewToken || DateTime.Now > accessTokenBag.ExpireTime)
            {
                accessTokenBag.AccessTokenJsonResult = ApiHelper.Get <AccessTokenJsonResult>(CommonApi.GetAccessToken(accessTokenBag.CorpID, accessTokenBag.Secret));
                //考虑到网络延时提前20秒过期
                accessTokenBag.ExpireTime = DateTime.Now.AddSeconds(accessTokenBag.AccessTokenJsonResult.expires_in - 20);
            }
            return(accessTokenBag.AccessTokenJsonResult);
        }