/// <summary> /// 刷新AuthorizerToken /// /// </summary> /// <param name="componentAccessToken"></param> /// <param name="componentAppId"></param> /// <param name="authorizerAppid"></param> /// <param name="refreshToken"></param> /// <returns></returns> public static RefreshAuthorizerTokenResult RefreshAuthorizerToken(string componentAccessToken, string componentAppId, string authorizerAppid, string refreshToken) { var refreshResult = ComponentApi.ApiAuthorizerToken(componentAccessToken, componentAppId, authorizerAppid, refreshToken); //更新到存储 ComponentContainer.AuthorizerTokenRefreshedFunc(authorizerAppid, refreshResult); return(refreshResult); }
/// <summary> /// 获取可用Ticket /// </summary> /// <param name="componentAppId"></param> /// <param name="authorizerAppid"></param> /// <param name="getNewTicket">是否强制重新获取新的Ticket</param> /// <returns></returns> public static JsApiTicketResult GetJsApiTicketResult(string componentAppId, string authorizerAppid, bool getNewTicket = false) { TryRegister(componentAppId, authorizerAppid); var accessTicketBag = (AuthorizerBag)ItemCollection[authorizerAppid]; lock (accessTicketBag.Lock) { if (getNewTicket || accessTicketBag.JsApiTicketExpireTime <= DateTime.Now) { //已过期,重新获取 var authorizerAccessToken = TryGetAuthorizerAccessToken(componentAppId, authorizerAppid); accessTicketBag.JsApiTicketResult = ComponentApi.GetJsApiTicket(authorizerAccessToken); accessTicketBag.JsApiTicketExpireTime = DateTime.Now.AddSeconds(accessTicketBag.JsApiTicketResult.expires_in); } } return(accessTicketBag.JsApiTicketResult); }
/// <summary> /// 获取QueryAuthResult(此方法每次都会发出请求,不缓存) /// </summary> /// <param name="componentAppId"></param> /// <param name="authorizationCode"></param> /// <param name="updateToAuthorizerContanier">是否将Authorization更新到AuthorizerContanier</param> /// <param name="getNewToken"></param> /// <returns></returns> /// <exception cref="WeixinOpenException"></exception> public static QueryAuthResult GetQueryAuthResult(string componentAppId, string authorizationCode, bool updateToAuthorizerContanier = true, bool getNewToken = false) { if (!CheckRegistered(componentAppId)) { throw new WeixinOpenException(UN_REGISTER_ALERT); } var componentBag = (ComponentBag)ItemCollection[componentAppId]; lock (componentBag.Lock) { var accessToken = TryGetComponentAccessToken(componentAppId, componentBag.ComponentAppSecret); var queryAuthResult = ComponentApi.QueryAuth(accessToken, componentAppId, authorizationCode); if (updateToAuthorizerContanier) { //更新到AuthorizerContainer AuthorizerContainer.TryUpdateAuthorizationInfo(componentAppId, queryAuthResult.authorization_info.authorizer_appid, queryAuthResult.authorization_info); } return(queryAuthResult); } }
/// <summary> /// 获取可用AccessToken /// </summary> /// <param name="componentAppId"></param> /// <param name="componentVerifyTicket">如果为null则自动获取</param> /// <param name="getNewToken">是否强制重新获取新的Token</param> /// <returns></returns> public static ComponentAccessTokenResult GetComponentAccessTokenResult(string componentAppId, string componentVerifyTicket = null, bool getNewToken = false) { if (!CheckRegistered(componentAppId)) { throw new WeixinOpenException(UN_REGISTER_ALERT); } var accessTokenBag = (ComponentBag)ItemCollection[componentAppId]; lock (accessTokenBag.Lock) { if (getNewToken || accessTokenBag.ComponentAccessTokenExpireTime <= DateTime.Now) { //已过期,重新获取 componentVerifyTicket = componentVerifyTicket ?? TryGetComponentVerifyTicket(componentAppId); var componentAccessTokenResult = ComponentApi.GetComponentAccessToken(accessTokenBag.ComponentAppId, accessTokenBag.ComponentAppSecret, componentVerifyTicket); accessTokenBag.ComponentAccessTokenResult = componentAccessTokenResult; accessTokenBag.ComponentAccessTokenExpireTime = DateTime.Now.AddSeconds(componentAccessTokenResult.expires_in); } } return(accessTokenBag.ComponentAccessTokenResult); }