internal bool VerifyCredentials()
        {
            lock (AuthLock)
            {
                if (AuthToken == null && ImplicitToken == null)
                {
                    Authorize();
                    return(true);
                }
                else
                {
                    if (!RequestedScopes.Contains(Scope.None) || ReauthorizeScopes)
                    {
                        Authorize();
                        return(true);
                    }

                    if (!IsTokenValid())
                    {
                        RefreshAccessToken();
                        return(true);
                    }
                }
                return(true);
            }
        }
        /// <summary>Request information about the authorization token.</summary>
        /// <returns>An object containing the returned information, or null if the request failed</returns>
        public TokenVerification VerifyToken()
        {
            while (VerifyCredentials())
            {
                string Token;
                if (AuthToken != null && GrantType == OAuthGrant.Authorization)
                {
                    Token = AuthToken.AccessToken;
                }
                else if (ImplicitToken != null && GrantType == OAuthGrant.Implicit)
                {
                    Token = ImplicitToken.AccessToken;
                }
                else
                {
                    return(null);
                }

                var VerificationClient = new HttpClient();
                VerificationClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
                VerificationClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var Response = VerificationClient.GetAsync("https://login.eveonline.com/oauth/verify").Result;
                if (Response.StatusCode != System.Net.HttpStatusCode.OK)
                {
                    return(null);
                }

                var Json   = Response.Content.ReadAsStringAsync().Result;
                var Result = JsonConvert.DeserializeObject <TokenVerification>(Json);
                if (!RequestedScopes.Contains(Scope.None) && !RequestedScopes.TrueForAll(x => Result.Scopes.Contains(x)))
                {
                    ReauthorizeScopes = true;
                }
                else
                {
                    return(Result);
                }
            }
            return(null);
        }