C# метод OAauth 1.0

351
09 августа 2017, 17:29

Пользуюсь RESP API одной компании. Пытаюсь написать метод на C#, который выполняет запрос. Проблемы начинаются на запросах, требующие авторизацию OAuth 1.0. я добавляю параметры oauth_token, auth_version, в конструктор HMACSHA1 добавляю secret_token_key и все ломается.

При добавлении любого параметра на строке

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

вылетает ошибка:

"The remote server returned an error: (401) Unauthorized."

Мне кажется дело именно в параметре oauth_version. Прошу помощи.

 private void AuthorizeWP()
    {
        string requestURL = @"request_link";
        UriBuilder tokenRequestBuilder = new UriBuilder(requestURL);
        var query = HttpUtility.ParseQueryString(tokenRequestBuilder.Query);
        query["oauth_consumer_key"] = "consumer_key";
        query["oauth_token"] = "token_key";
        query["oauth_signature_method"] = "HMAC-SHA1";
        string signature = string.Format("{0}&{1}&{2}", "GET", Uri.EscapeDataString(requestURL),
            Uri.EscapeDataString(query.ToString()));
        string oauthSignature = "";
        using (HMACSHA1 hmac = new HMACSHA1(Encoding.ASCII.GetBytes("secret_consumer_key&secret_token_key")))
        {
            byte[] hashPayLoad = hmac.ComputeHash(Encoding.ASCII.GetBytes(signature));
            oauthSignature = Convert.ToBase64String(hashPayLoad);
        }
        query["oauth_signature"] = oauthSignature;
        query["oauth_timestamp"] = Math.Truncate(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds)
            .ToString();
        query["oauth_nonce"] = Guid.NewGuid().ToString("N");
        query["oauth_version"] = "1.0";
        tokenRequestBuilder.Query = query.ToString();
        HttpWebRequest request = (HttpWebRequest) WebRequest.Create(tokenRequestBuilder.ToString());
        request.Method = "GET";
        HttpWebResponse response = (HttpWebResponse) request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        string text = reader.ReadToEnd();
        Console.WriteLine(text);
        Console.ReadKey();
    }
READ ALSO
Gmap.Net получить координаты для маркера

Gmap.Net получить координаты для маркера

Необходимо добавить 2000 объектов на картуКод снизу добавляет один маркер +- в секунду

409
Как начать делать текстовый квест?

Как начать делать текстовый квест?

Нужно реализовать класс Quest в котором будут хранятся шаги

680
Работа с HtmlAgilityPack

Работа с HtmlAgilityPack

Нужна помощьМне требуется распарсить HTML-страницу после нажатия на ней на некоторую кнопку

287
c# webbrowser запуск ролика youtube c кнопки

c# webbrowser запуск ролика youtube c кнопки

ЗдравствуйтеНе подскажите возможно ли запустить погруженный ролик с ютуба с кнопки? И если нет, то как можно сделать запрет на клик правой...

265