/// <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); }
public static AccessTokenJsonResult GetAccessToken(string corpid, string corpsecret) { return(ApiHelper.Get <AccessTokenJsonResult>(CommonApi.GetAccessToken(corpid, corpsecret))); }
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); }