Я пытаюсь опубликовать обновление статуса в Твиттере, и у меня просто не получается.
var consumer = new TwitterConsumer(); // WebConsumer implementation
var httpClient = new HttpClient(consumer.CreateAuthorizingHandler("THE_TOKEN", new HttpClientHandler()));
var content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{"status", "test"}
});
// yes, yes, ugly code, only testing here
var s = httpClient.PostAsync("https://api.twitter.com/1.1/statuses/update.json", content);
var t = s.Result;
var u = t.Content.ReadAsStringAsync().Result; // HTTP 401, response from Twitter is {"errors":[{"message":"Could not authenticate you","code":32}]}
Конечно, изначально я думал, что есть какие-то проблемы с моими токенами авторизации или процессом OAuth, но все остальное работает нормально:
Аутентификация OAuth работает, потому что я могу получить доступ к другим методам API, таким как https://api.twitter.com/1.1/account/settings.json
.
Я даже могу публиковать обновления статуса при отправке status
через URI, например POST https://api.twitter.com/1.1/statuses/update.json?status=test
. Я получаю ошибку только тогда, когда пытаюсь поместить status
в тело запроса.
По словам Google, у многих людей есть подобные проблемы, к сожалению, предложенные решения (например, двойная проверка URL-кодировки или content
-Request-Header) не работают для меня (запрос выглядит так, как должен в Fiddler).
status
в URL, а не в тело. Поэтому я использовал POST-запрос, но параметр GET - я обновлю мой вопрос соответственно Извинения за путаницу. - person Hannes Sachsenhofer   schedule 12.12.2013