/// <summary>
        /// Возвращает заголовок авторизации, который используется для подписи запросов к серверу Twitter
        /// </summary>
        /// <param name="requestMethod">Тип запроса GET или POST</param>
        /// <param name="baseRequestUrl">Базовый адрес запроса (url запроса без параметров)</param>
        /// <param name="additionalHeaderParameters">Дополнительные параметры, которые необходимо включить в заголовок авторизации</param>
        /// <param name="requestParameters">Дополнительные параметры которые будут включены в строку запроса</param>
        /// <param name="tokenSecret">Секрет маркера. Будет участвовать в созлании подписи</param>
        /// <returns></returns>
        protected AuthorizationHeaderInfo GetAuthorizationHeaderInfo(string requestMethod, string baseRequestUrl, Dictionary <string, string> additionalHeaderParameters = null, Dictionary <string, string> requestParameters = null, string tokenSecret = "")
        {
            AuthorizationHeaderInfo hInfo = new AuthorizationHeaderInfo
            {
                HeaderValue = GetAuthorizationHeaderValue(requestMethod, baseRequestUrl, additionalHeaderParameters, requestParameters, tokenSecret)
            };

            return(hInfo);
        }
        /// <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);
        }
Exemplo n.º 3
0
        public string UsersShow(string screen_name, string oauth_token_secret)
        {
            string requestMethod   = "GET";
            string getUsersShowUrl = string.Format("{0}?screen_name={1}", _GetUsersShowUrl, screen_name);

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

            httpRequest.Method = requestMethod;

            Dictionary <string, string> requestParameters = new Dictionary <string, string>()
            {
                { "screen_name", screen_name },
                { "include_entities", "true" }
            };

            AuthorizationHeaderInfo authorizationHeaderInfo = GetAuthorizationHeaderInfo(requestMethod, _requestAccessTokenUrl, null, requestParameters, oauth_token_secret);

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

            return(ReadResponseFrom(httpRequest));
        }
        /// <summary>
        /// Возвращает заголовок авторизации, который используется для подписи запросов к серверу Twitter
        /// </summary>
        /// <param name="requestMethod">Тип запроса GET или POST</param>
        /// <param name="baseRequestUrl">Базовый адрес запроса (url запроса без параметров)</param>
        /// <param name="additionalHeaderParameters">Дополнительные параметры, которые необходимо включить в заголовок авторизации</param>
        /// <param name="requestParameters">Дополнительные параметры которые будут включены в строку запроса</param>
        /// <param name="tokenSecret">Секрет маркера. Будет участвовать в созлании подписи</param>
        /// <returns></returns>
        protected AuthorizationHeaderInfo GetAuthorizationHeaderInfo(string requestMethod, string baseRequestUrl, Dictionary<string, string> additionalHeaderParameters = null, Dictionary<string, string> requestParameters = null, string tokenSecret = "")
        {
            AuthorizationHeaderInfo hInfo = new AuthorizationHeaderInfo
            {
                HeaderValue = GetAuthorizationHeaderValue(requestMethod, baseRequestUrl, additionalHeaderParameters, requestParameters, tokenSecret)
            };

            return hInfo;
        }