public string Get(string appId) { if (String.IsNullOrEmpty(appId)) { return(null); } AuthorizerAccessTokenWrapper wrapper = _accessTokenWrapperList[appId]; if (wrapper == null) { lock (_getWrapperLockObj) { wrapper = _accessTokenWrapperList[appId]; if (wrapper == null) { wrapper = CreateWrapper(appId); _accessTokenWrapperList.TryAdd(appId, wrapper); } } } if (wrapper != null) { return(wrapper.AccessToken); } else { return(null); } }
private AuthorizerAccessTokenWrapper CreateWrapper(string appId) { string refreshToken = _thirdPartyManager.GetAuthorizerRefreshToken(appId); if (String.IsNullOrEmpty(refreshToken)) { _log.Write(appId + " 的 RefreshToken 不存在", TraceEventType.Warning); return(null); } RequestApiResult <WeixinThirdPartyGetAuthorizerAccessTokenResult> result = ThirdPartyApiWrapper.GetAuthorizerAccessToken(appId, refreshToken); if (result.Success) { AuthorizerAccessTokenWrapper wrapper = new AuthorizerAccessTokenWrapper(); wrapper.AppId = appId; wrapper.RefreshToken = result.ApiResult.RefreshToken; wrapper.AccessToken = result.ApiResult.AccessToken; wrapper.AccessTokenExpiryTime = DateTime.Now.AddSeconds(result.ApiResult.ExpiresIn); return(wrapper); } return(null); }
private void UpdateWrapper(AuthorizerAccessTokenWrapper wrapper) { RequestApiResult <WeixinThirdPartyGetAuthorizerAccessTokenResult> result = ThirdPartyApiWrapper.GetAuthorizerAccessToken(wrapper.AppId, wrapper.RefreshToken); if (result.Success) { wrapper.RefreshToken = result.ApiResult.RefreshToken; wrapper.AccessToken = result.ApiResult.AccessToken; wrapper.AccessTokenExpiryTime = DateTime.Now.AddSeconds(result.ApiResult.ExpiresIn); } }
public void Add(string appId, string accessToken, int expiresIn, string refreshToken) { lock (_getWrapperLockObj) { AuthorizerAccessTokenWrapper wrapper = new AuthorizerAccessTokenWrapper(); wrapper.AppId = appId; wrapper.AccessToken = accessToken; wrapper.AccessTokenExpiryTime = DateTime.Now.AddSeconds(expiresIn); wrapper.RefreshToken = refreshToken; _accessTokenWrapperList.AddOrUpdate(appId, wrapper, (itemAppId, itemWrapper) => { return(wrapper); }); } }