/// <summary> /// 【异步方法】获取可用的GetAuthorizerInfoResult /// </summary> /// <param name="componentAppId"></param> /// <param name="authorizerAppid"></param> /// <param name="getNewTicket">是否强制重新获取新的Ticket</param> /// <returns></returns> ///// <exception cref="WeixinOpenException">此公众号没有高级权限</exception> public static async Task <GetAuthorizerInfoResult> GetAuthorizerInfoResultAsync(string componentAppId, string authorizerAppid, bool getNewTicket = false) { await TryRegisterAsync(componentAppId, authorizerAppid).ConfigureAwait(false); var authorizerBag = await TryGetItemAsync(authorizerAppid).ConfigureAwait(false); using (await Cache.BeginCacheLockAsync(LockResourceName + ".GetAuthorizerInfoResult", authorizerAppid).ConfigureAwait(false))//同步锁 { //更新AuthorizerInfokd if (getNewTicket || authorizerBag.AuthorizerInfo.user_name == null) { var componentVerifyTicket = await ComponentContainer.TryGetComponentVerifyTicketAsync(componentAppId).ConfigureAwait(false); var componentAccessToken = await ComponentContainer.GetComponentAccessTokenAsync(componentAppId, componentVerifyTicket).ConfigureAwait(false); //已过期,重新获取 var getAuthorizerInfoResult = await ComponentApi.GetAuthorizerInfoAsync(componentAccessToken, componentAppId, authorizerAppid).ConfigureAwait(false);//TODO:如果是过期,可以通过刷新的方式重新获取 //AuthorizerInfo authorizerBag.AuthorizerInfo = getAuthorizerInfoResult.authorizer_info; await UpdateAsync(authorizerBag, null).ConfigureAwait(false);//更新到缓存 //var componentBag = ComponentContainer.TryGetItem(componentAppId); //if (string.IsNullOrEmpty(authorizerBag.AuthorizerInfoResult.authorization_info.authorizer_access_token)) //{ // //账号没有此权限 // throw new WeixinOpenException("此公众号没有高级权限", componentBag); //} } } return(authorizerBag.FullAuthorizerInfoResult); }