/// <summary> /// 尝试更新AuthorizationInfo(如果没有AccessToken则不更新)。 /// 如果AuthorizerBag更新则返回最新的对象,否则返回null /// </summary> /// <param name="componentAppId"></param> /// <param name="authorizerAppid"></param> /// <param name="authorizerAccessToken"></param> /// <param name="authorizerRefreshToken"></param> /// <param name="expiresIn"></param> public static void TryUpdateAuthorizationInfo(string componentAppId, string authorizerAppid, string authorizerAccessToken, string authorizerRefreshToken, int expiresIn) { TryRegister(componentAppId, authorizerAppid); if (expiresIn > 0 && authorizerAccessToken != null) { using (FlushCache.CreateInstance()) { var authorizerBag = TryGetItem(authorizerAppid); var refreshTokenChanged = authorizerBag.AuthorizationInfo.authorizer_access_token != authorizerAccessToken || authorizerBag.AuthorizationInfo.authorizer_refresh_token != authorizerRefreshToken; authorizerBag.AuthorizationInfo.authorizer_access_token = authorizerAccessToken; authorizerBag.AuthorizationInfo.authorizer_refresh_token = authorizerRefreshToken; authorizerBag.AuthorizationInfo.expires_in = expiresIn; authorizerBag.AuthorizationInfoExpireTime = ApiUtility.GetExpireTime(expiresIn); //通知变更 if (refreshTokenChanged) { ComponentContainer.AuthorizerTokenRefreshedFunc(componentAppId, authorizerAppid, new RefreshAuthorizerTokenResult(authorizerAccessToken, authorizerRefreshToken, expiresIn)); } } } }
/// <summary> /// 尝试更新AuthorizationInfo(如果没有AccessToken则不更新) /// </summary> /// <param name="componentAppId"></param> /// <param name="authorizerAppid"></param> /// <param name="authorizationInfo"></param> public static void TryUpdateAuthorizationInfo(string componentAppId, string authorizerAppid, AuthorizationInfo authorizationInfo) { TryRegister(componentAppId, authorizerAppid); if (authorizationInfo.expires_in > 0 && authorizationInfo.authorizer_access_token != null) { var authorizerBag = TryGetItem(authorizerAppid); var refreshTokenChanged = authorizerBag.AuthorizationInfo.authorizer_access_token != authorizationInfo.authorizer_access_token || authorizerBag.AuthorizationInfo.authorizer_refresh_token != authorizationInfo.authorizer_refresh_token; authorizerBag.AuthorizationInfo = authorizationInfo; authorizerBag.AuthorizationInfoExpireTime = ApiUtility.GetExpireTime(authorizationInfo.expires_in); //通知变更 if (refreshTokenChanged) { ComponentContainer.AuthorizerTokenRefreshedFunc(componentAppId, authorizerAppid, new RefreshAuthorizerTokenResult(authorizationInfo.authorizer_access_token, authorizationInfo.authorizer_refresh_token, authorizationInfo.expires_in)); } } }
/// <summary> /// 【异步方法】刷新AuthorizerToken /// </summary> /// <param name="componentAccessToken"></param> /// <param name="componentAppId"></param> /// <param name="authorizerAppid"></param> /// <param name="refreshToken"></param> /// <returns></returns> public static async Task <RefreshAuthorizerTokenResult> RefreshAuthorizerTokenAsync(string componentAccessToken, string componentAppId, string authorizerAppid, string refreshToken) { var refreshResult = await ComponentApi.ApiAuthorizerTokenAsync(componentAccessToken, componentAppId, authorizerAppid, refreshToken); //更新到存储 ComponentContainer.AuthorizerTokenRefreshedFunc(componentAppId, authorizerAppid, refreshResult); return(refreshResult); }