async Task GetUserProfile(Account account, string token, DateTimeOffset expireAt)
        {
            var result = new LoginResultDataObject
            {
                Token    = token,
                ExpireAt = expireAt
            };

            var request = new OAuth2Request("GET", new Uri("https://www.googleapis.com/oauth2/v2/userinfo"),
                                            null, account);

            var response = await request.GetResponseAsync();

            if (response != null && response.StatusCode == HttpStatusCode.OK)
            {
                var userJson = response.GetResponseText();
                var jobject  = JObject.Parse(userJson);
                result.LoginState  = LoginState.Success;
                result.Email       = jobject["email"]?.ToString();
                result.FirstName   = jobject["given_name"]?.ToString();
                result.LastName    = jobject["family_name"]?.ToString();
                result.Id          = jobject["id"]?.ToString();
                result.Distributor = "Google";
            }
            else
            {
                result.LoginState  = LoginState.Failed;
                result.ErrorString = $"Error: Responce={response}, StatusCode = {response?.StatusCode}";
            }

            SetResult(result);
        }
        public void SetUserToken(VKAccessToken token)
        {
            _loginResult = new LoginResultDataObject
            {
                Email    = token.Email,
                Token    = token.AccessToken,
                Id       = token.UserId,
                ExpireAt = FromMsDateTime(token.ExpiresIn),
            };

            Task.Run(GetUserInfo);
        }
 public Task <RequestResult <AuthSuccessResponse> > LoginInApi(LoginResultDataObject loginResult, CancellationToken cts)
 {
     return(MakeRequest(ct => _identityAPI.LoginAsync(loginResult, ct), cts));
 }
 void SetResult(LoginResultDataObject result)
 {
     _completionSource?.TrySetResult(result);
     _completionSource = null;
 }
 public void Logout()
 {
     _loginResult      = null;
     _completionSource = null;
     VKSdk.Logout();
 }