public void TestConstructor()
        {
            var request = new RefreshTokenRequest();
            Assert.Null(request.Scope);
            Assert.Null(request.ClientId);
            Assert.Null(request.ClientSecret);

            Assert.Null(request.RefreshToken);
            Assert.That(request.GrantType, Is.EqualTo("refresh_token"));
        }
        public async Task<TokenResponse> RefreshTokenAsync(string userId, string refreshToken,
            CancellationToken taskCancellationToken)
        {
            var refreshTokenReq = new RefreshTokenRequest
            {
                RefreshToken = refreshToken,
            };
            var token = await FetchTokenAsync(userId, refreshTokenReq, taskCancellationToken).ConfigureAwait(false);

            // The new token may not contain a refresh token, so set it with the given refresh token.
            if (token.RefreshToken == null)
            {
                token.RefreshToken = refreshToken;
            }

            await StoreTokenAsync(userId, token, taskCancellationToken).ConfigureAwait(false);
            return token;
        }