public string TwitterCallback(string oauth_token, string oauth_verifier)
        {
            twOAuth.SetOauthVerifier(oauth_verifier);
            accessTokenResult = twOAuth.ExchangeRequestTokenToAccessToken();

            return accessTokenResult.oauth_token;
        }
        /// <summary>
        /// Метод обмена маркера на маркер доступа. Т.е. получение маркера с помощью которого можно будет производить запросы к API ServiceProvider'а от имени пользователя.
        /// <summary>
        /// <returns></returns>
        public TwitterAccessTokenResult ExchangeRequestTokenToAccessToken()
        {
            string requestMethod = "POST";

            // Получаем специфичные для провайдера сервиса параметры запроса
            Dictionary <string, string> requestParameters = GetRequestParametersForAccessToken();
            StringBuilder requestSb = new StringBuilder(AccessTokenUrl);

            if (requestParameters != null)
            {
                requestSb.Append("?");
                foreach (var kvp in requestParameters)
                {
                    AppendOAuthParamToQuery(requestSb, kvp.Key, kvp.Value, true);
                }

                // удаляем последнюю запятую
                requestSb.Remove(requestSb.Length - 1, 1);
            }

            string getAccessTokenUrl = requestSb.ToString();

            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(getAccessTokenUrl);

            httpRequest.Method = requestMethod;

            // Дополнительные параметры для данного запроса
            Dictionary <string, string> additionalHeaderParameters = new Dictionary <string, string>()
            {
                { "oauth_token", RequestToken }
            };

            AuthorizationHeaderInfo authorizationHeaderInfo = GetAuthorizationHeaderInfo(requestMethod, AccessTokenUrl, additionalHeaderParameters, requestParameters, RequestTokenSecret);

            httpRequest.Headers.Add(authorizationHeaderInfo.HeaderName, authorizationHeaderInfo.HeaderValue);

            string result = ReadResponseFrom(httpRequest);

            TwitterAccessTokenResult accessTokenResult = new TwitterAccessTokenResult(result);

            return(accessTokenResult);
        }
        /// <summary>
        /// Метод обмена маркера на маркер доступа. Т.е. получение маркера с помощью которого можно будет производить запросы к API ServiceProvider'а от имени пользователя.
        /// <summary>
        /// <returns></returns>
        public TwitterAccessTokenResult ExchangeRequestTokenToAccessToken()
        {
            string requestMethod = "POST";

            // Получаем специфичные для провайдера сервиса параметры запроса
            Dictionary<string, string> requestParameters = GetRequestParametersForAccessToken();
            StringBuilder requestSb = new StringBuilder(AccessTokenUrl);
            if (requestParameters != null)
            {
                requestSb.Append("?");
                foreach (var kvp in requestParameters)
                {
                    AppendOAuthParamToQuery(requestSb, kvp.Key, kvp.Value, true);
                }

                // удаляем последнюю запятую
                requestSb.Remove(requestSb.Length - 1, 1);
            }

            string getAccessTokenUrl = requestSb.ToString();

            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(getAccessTokenUrl);
            httpRequest.Method = requestMethod;

            // Дополнительные параметры для данного запроса
            Dictionary<string, string> additionalHeaderParameters = new Dictionary<string, string>()
            {
                {"oauth_token", RequestToken}
            };

            AuthorizationHeaderInfo authorizationHeaderInfo = GetAuthorizationHeaderInfo(requestMethod, AccessTokenUrl, additionalHeaderParameters, requestParameters, RequestTokenSecret);
            httpRequest.Headers.Add(authorizationHeaderInfo.HeaderName, authorizationHeaderInfo.HeaderValue);

            string result = ReadResponseFrom(httpRequest);

            TwitterAccessTokenResult accessTokenResult = new TwitterAccessTokenResult(result);
            return accessTokenResult;
        }