/// <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 async Task<QueryAuthResult> GetQueryAuthResultAsync(string componentAppId, string authorizationCode, bool updateToAuthorizerContanier = true, bool getNewToken = false) { if (!CheckRegistered(componentAppId)) { throw new WeixinOpenException(UN_REGISTER_ALERT); } var componentBag = TryGetItem(componentAppId); using (Cache.BeginCacheLock(LockResourceName + ".GetQueryAuthResult", componentAppId))//同步锁 { var accessToken = TryGetComponentAccessToken(componentAppId, componentBag.ComponentAppSecret, null, getNewToken); var queryAuthResult = await ComponentApi.QueryAuthAsync(accessToken, componentAppId, authorizationCode); if (updateToAuthorizerContanier) { //更新到AuthorizerContainer AuthorizerContainer.TryUpdateAuthorizationInfo(componentAppId, queryAuthResult.authorization_info.authorizer_appid, queryAuthResult.authorization_info); } return queryAuthResult; } }