public OAuthAccessTokenResponse RequestAccessToken()
        {
            this.Validate();
            NameValueCollection      parameters = this.CreateRequestParameters();
            OAuthAccessTokenResponse response   = this.RequestAccessTokenCore(parameters);

            return(response);
        }
        protected virtual OAuthAccessTokenResponse MapError(NameValueCollection responseData)
        {
            var accessTokenResponse = new OAuthAccessTokenResponse
            {
                ErrorCode        = responseData[OAuthConstants.Error],
                ErrorDescription = responseData[OAuthConstants.ErrorDescription]
            };

            return(accessTokenResponse);
        }
        protected virtual OAuthAccessTokenResponse MapResult(NameValueCollection responseData)
        {
            var accessTokenResponse = new OAuthAccessTokenResponse
            {
                AccessToken  = responseData[OAuthConstants.AccessToken],
                RefreshToken = responseData[OAuthConstants.RefreshToken],
                ValidTo      = this.GetDateTimeFromExpiresOn(Convert.ToUInt64(responseData[OAuthConstants.TokenExpiresIn]))
            };

            return(accessTokenResponse);
        }