コード例 #1
0
        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);
        }
コード例 #2
0
 /// <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));
 }
コード例 #3
0
 /// <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));
 }