private async Task <bool> RefreshTokensAsync(CancellationToken cancellationToken) { var refreshToken = RefreshToken; if (refreshToken.IsMissing()) { return(false); } if (await _lock.WaitAsync(Timeout, cancellationToken).ConfigureAwait(false)) { try { var response = await _oidcClient.RefreshTokenAsync(refreshToken, cancellationToken : cancellationToken).ConfigureAwait(false); if (!response.IsError) { _accessToken = response.AccessToken; if (!response.RefreshToken.IsMissing()) { _refreshToken = response.RefreshToken; } #pragma warning disable 4014 Task.Run(() => { foreach (EventHandler <TokenRefreshedEventArgs> del in TokenRefreshed.GetInvocationList()) { try { del(this, new TokenRefreshedEventArgs(response.AccessToken, response.RefreshToken, (int)response.ExpiresIn)); } catch { } } }).ConfigureAwait(false); #pragma warning restore 4014 return(true); } } finally { _lock.Release(); } } return(false); }
/// <summary> /// Generates a new set of tokens based on a refresh token. /// </summary> /// <param name="refreshToken">The refresh token which was issued during the authorization flow, or subsequent /// calls to <see cref="RefreshTokenAsync"/>.</param> /// <returns></returns> public Task <RefreshTokenResult> RefreshTokenAsync(string refreshToken) { return(_oidcClient.RefreshTokenAsync(refreshToken)); }
/// <summary> /// Generates a new set of tokens based on a refresh token. /// </summary> /// <param name="refreshToken">The refresh token which was issued during the authorization flow, or subsequent /// calls to <see cref="OidcClient.RefreshTokenAsync"/>.</param> /// <param name="extraParameters">Additional parameters to send to the refresh endpoint</param> /// <returns></returns> public Task <RefreshTokenResult> RefreshTokenAsync(string refreshToken, object extraParameters) { return(_oidcClient.RefreshTokenAsync(refreshToken, extraParameters)); }