public async Task <ActionResult <UserJwtResponse> > CompleteTwitterAuthenticationAsync(
            [FromBody] CompleteTwitterAuthenticationRequest request
            )
        {
            var loginToken = HttpContext.Session.GetString(TwitterOauthTokenKey);

            if (loginToken == null)
            {
                return(BadRequest());
            }


            var accessToken = await _twitterClient.GetAccessTokenAsync(loginToken, request.OAuthToken, request.OauthVerifier);

            var currentUserId = HttpContext.Session.GetCurrentUserId();

            if (currentUserId.HasValue)
            {
                await _socialMediaUserLinkService.AssociateUserToTwitterIdAsync(currentUserId.Value, accessToken.UserId);
            }

            var user = await _socialMediaUserLinkService.GetOrCreateUserFromTwitterAsync(accessToken.ScreenName, accessToken.UserId);

            HttpContext.Session.SetCurrentUserId(user.Id);
            var token = _jwtService.GenerateJwtToken(user.Id);

            return(new UserJwtResponse
            {
                Token = token,
                UserInfo = _mapper.Map <UserInfoResponse>(user)
            });
        }