/// <summary>
        /// Remove associated login by LoginProvider and ProviderKey
        /// </summary>
        /// <param name="request">Instance of RemoveLoginRequest</param>
        /// <returns>Instance of RemoveLoginResponse</returns>
        public async Task <RemoveLoginResponse> RemoveLoginAsync(RemoveLoginRequest request)
        {
            RemoveLoginResponse response = new RemoveLoginResponse();

            try
            {
                IdentityResult result = await UserManager.RemoveLoginAsync(request.UserId.ToString(), new UserLoginInfo(request.LoginProvider, request.ProviderKey));

                if (!result.Succeeded)
                {
                    response.AddErrors(response.Errors);
                    response.Success = false;
                }
                else
                {
                    response.Success = true;
                }
            }
            catch (Exception e)
            {
                response.Success = false;
                response.Errors.Add(e.Message);
            }

            return(response);
        }
        public async Task <IHttpActionResult> RemoveLogin(RemoveLoginRequest model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            IdentityResult result;

            if (model.LoginProvider == LocalLoginProvider)
            {
                result = await UserManager.RemovePasswordAsync(User.Identity.GetUserId());
            }
            else
            {
                result = await UserManager.RemoveLoginAsync(User.Identity.GetUserId(),
                                                            new UserLoginInfo(model.LoginProvider, model.ProviderKey));
            }

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
        public async Task RemoveLoginAsync([FromBody] RemoveLoginRequest request)
        {
            var cp   = _httpContextAccessor.HttpContext.User;
            var user = await _userManager.GetUserAsync(cp);

            var result = await _userManager.RemoveLoginAsync(user, request.LoginProvider, request.ProviderKey);

            if (result.Succeeded)
            {
                await _signInManager.RefreshSignInAsync(user);
            }
            else
            {
                throw new System.Exception(string.Join(",", result.Errors.Select(t => t.Description)));
            }
        }
        /// <summary>
        /// Remove associated login by LoginProvider and ProviderKey
        /// </summary>
        /// <param name="request">Instance of RemoveLoginRequest</param>
        /// <returns>Instance of RemoveLoginResponse</returns>
        public async Task<RemoveLoginResponse> RemoveLoginAsync(RemoveLoginRequest request)
        {
            RemoveLoginResponse response = new RemoveLoginResponse();

            try
            {
                IdentityResult result = await UserManager.RemoveLoginAsync(request.UserId.ToString(), new UserLoginInfo(request.LoginProvider, request.ProviderKey));

                if (!result.Succeeded)
                {
                    response.AddErrors(response.Errors);
                    response.Success = false;
                }
                else
                {
                    response.Success = true;
                }

            }
            catch (Exception e)
            {
                response.Success = false;
                response.Errors.Add(e.Message);
            }

            return response;
        }