//static Dictionary<string, JsApiTicketBag> JsApiTicketCollection = // new Dictionary<string, JsApiTicketBag>(StringComparer.OrdinalIgnoreCase); /// <summary> /// 注册应用凭证信息,此操作只是注册,不会马上获取Ticket,并将清空之前的Ticket, /// </summary> /// <param name="appId"></param> /// <param name="appSecret"></param> /// <param name="name">标记JsApiTicket名称(如微信公众号名称),帮助管理员识别</param> /// 此接口不提供异步方法 public static void Register(string appId, string appSecret, string name = null) { RegisterFunc = () => { using (FlushCache.CreateInstance()) { var bag = new OAuthAccessTokenBag() { Name = name, AppId = appId, AppSecret = appSecret, OAuthAccessTokenExpireTime = DateTime.MinValue, OAuthAccessTokenResult = new OAuthAccessTokenResult() }; Update(appId, bag); return(bag); } }; RegisterFunc(); }
public static void Register(string appId, string appSecret, string name = null) { //记录注册信息,RegisterFunc委托内的过程会在缓存丢失之后自动重试 RegisterFunc = () => { using (FlushCache.CreateInstance()) { var bag = new JsApiTicketBag() { Name = name, AppId = appId, AppSecret = appSecret, ExpireTime = DateTime.MinValue, JsApiTicketResult = new JsApiTicketResult() }; Update(BuildingKey(appId, appSecret), bag); return(bag); } }; RegisterFunc(); }
/// <summary> /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token, /// </summary> /// <param name="componentAppId"></param> /// <param name="componentAppSecret"></param> /// <param name="getComponentVerifyTicketFunc">获取ComponentVerifyTicket的方法</param> /// <param name="getAuthorizerRefreshTokenFunc">从数据库中获取已存的AuthorizerAccessToken的方法</param> /// <param name="authorizerTokenRefreshedFunc">AuthorizerAccessToken更新后的回调</param> public static void Register(string componentAppId, string componentAppSecret, Func <string, string> getComponentVerifyTicketFunc, Func <string, string> getAuthorizerRefreshTokenFunc, Action <string, RefreshAuthorizerTokenResult> authorizerTokenRefreshedFunc) { //激活消息列队线程 if (GetComponentVerifyTicketFunc == null) { GetComponentVerifyTicketFunc = getComponentVerifyTicketFunc; GetAuthorizerRefreshTokenFunc = getAuthorizerRefreshTokenFunc; AuthorizerTokenRefreshedFunc = authorizerTokenRefreshedFunc; } using (FlushCache.CreateInstance()) { Update(componentAppId, new ComponentBag() { ComponentAppId = componentAppId, ComponentAppSecret = componentAppSecret, }); } }
/// <summary> /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token, /// </summary> /// <param name="corpId"></param> /// <param name="corpSecret"></param> /// <param name="name">标记Provider名称(如微信公众号名称),帮助管理员识别</param> public static void Register(string corpId, string corpSecret, string name = null) { RegisterFunc = () => { using (FlushCache.CreateInstance()) { var bag = new ProviderTokenBag() { Name = name, CorpId = corpId, CorpSecret = corpSecret, ExpireTime = DateTime.MinValue, ProviderTokenResult = new ProviderTokenResult() }; Update(BuildingKey(corpId, corpSecret), bag); //Update(corpId, bag); return(bag); } }; RegisterFunc(); }
/// <summary> /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token /// </summary> /// <param name="clientId"></param> /// <param name="clientSecret"></param> /// <param name="preAuthCode"></param> /// <param name="redirectUri"></param> /// <param name="state"></param> /// <param name="name"></param> public static void Register( string clientId, string clientSecret, string preAuthCode, string redirectUri, string state = null, string name = null) { //如果此clinetId 未注册,则进行注册 if (!CheckRegistered(clientId)) { //记录注册信息,RegisterFunc委托内的过程会在缓存丢失之后自动重试 RegisterFunc = () => { using (FlushCache.CreateInstance()) { var bag = new AccessTokenBag() { Key = clientId, Name = name, ClientId = clientId, ClientSecret = clientSecret, PreAuthCode = preAuthCode, RedirectUri = redirectUri, State = state, AccessTokenExpireTime = DateTime.MinValue, AccessTokenResult = new AccessTokenResult() }; Update(clientId, bag); return(bag); } }; RegisterFunc(); //OAuthAccessTokenContainer进行自动注册 //OAuthAccessTokenContainer.Register(clientId, clientSecret, name); } }
/// <summary> /// 获取Session /// </summary> /// <param name="key"></param> /// <returns></returns> public static SessionBag GetSession(string key) { var bag = TryGetItem(key); if (bag == null) { return(null); } if (bag.ExpireTime < DateTime.Now) { //已经过期 Cache.RemoveFromCache(key); return(null); } using (FlushCache.CreateInstance()) { bag.ExpireTime = GetExpireTime();//滚动过期时间 Update(key, bag); } return(bag); }
/// <summary> /// 注册应用凭证信息,此操作只是注册,不会马上获取Ticket,并将清空之前的Ticket, /// </summary> /// <param name="clientId"></param> /// <param name="clientSecret"></param> /// <param name="name">标记Authorizer名称,帮助管理员识别</param> private static void Register(string clientId, string clientSecret, string name = null) { RegisterFunc = () => { using (FlushCache.CreateInstance()) { var bag = new AuthrizationBag() { Name = name, AuthorizerClientId = clientId, AuthorizerClientSecret = clientSecret, OAuthAccessTokenResult = new OAuthAccessTokenResult(), AccessTokenExpiryTime = DateTime.MinValue, }; Update(clientId, bag); return(bag); } }; RegisterFunc(); //TODO:这里也可以考虑尝试进行授权(会影响速度) }
/// <summary> /// 注册应用凭证信息,此操作只是注册,不会马上获取Ticket,并将清空之前的Ticket, /// </summary> /// <param name="authorizerAppId"></param> /// <param name="componentAppId"></param> /// <param name="name">标记Authorizer名称(如微信公众号名称),帮助管理员识别</param> private static void Register(string componentAppId, string authorizerAppId, string name = null) { var componentBag = ComponentContainer.TryGetItem(componentAppId); if (componentBag == null) { throw new WeixinOpenException(string.Format("注册AuthorizerContainer之前,必须先注册对应的ComponentContainer!ComponentAppId:{0},AuthorizerAppId:{1}", componentAppId, authorizerAppId)); } RegisterFunc = () => { using (FlushCache.CreateInstance()) { var bag = new AuthorizerBag() { Name = name, AuthorizerAppId = authorizerAppId, ComponentAppId = componentAppId, AuthorizationInfo = new AuthorizationInfo(), AuthorizationInfoExpireTime = DateTime.MinValue, AuthorizerInfo = new AuthorizerInfo(), //AuthorizerInfoExpireTime = DateTime.MinValue, JsApiTicketResult = new JsApiTicketResult(), JsApiTicketExpireTime = DateTime.MinValue, }; Update(authorizerAppId, bag); return(bag); } }; RegisterFunc(); //TODO:这里也可以考虑尝试进行授权(会影响速度) }
public void CreateInstanceTest() { var instance = FlushCache.CreateInstance(); Assert.IsNotNull(instance); }