Подтвердить что ты не робот

API Twitter + OAuth: не удается отправить обновления статуса, получив 401

Я пытаюсь использовать Twitter API и OAuth для отправки обновлений статуса (новые Tweets). Я использую пример кода Шеннона Уитли .NET http://www.voiceoftech.com/swhitley/?p=681 (как рекомендовано в документах API Twitter). Я могу читать (GET), используя OAuth, только отлично, однако, когда я пытаюсь отправить обновление статуса через http://twitter.com/statuses/update.xml(используя POST), он возвращает 401 со следующим XML:

<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <request>/statuses/update.xml</request>
  <error>Read-only application cannot POST</error>
</hash>

Я клянусь, что настроил мое приложение для использования чтения и записи, авторизационная страница в Twitter (http://twitter.com/oauth/authorize) даже говорит: "Приложение TweeVerbs.com(Development) возможность доступа и обновления ваших данных в Twitter.

Тем не менее он все еще говорит, что "приложение только для чтения не может POST". WTF!?

Я искал это сообщение об ошибке, пока не стал синим. Я нашел где-то, что сказал, чтобы добавить paremeter querystring oauth_access_type = написать URL-адрес перенаправления, который идет на страницу авторизации Twitter, которую я сделал, но он все равно дает мне 401.


Если это помогает, вот данные, которые отправляются назад и firth в соответствии с рабочим процессом OAuth:

Авторизовать токен запроса:

HTTP://twitter.com/oauth/request_token oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q & oauth_nonce = 2790042 & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1244567068 & oauth_version = 1,0 & oauth_signature = KzxcXN% 2bQ0AJoAJ% 2flQfzs8SLjC% 2fQ% 3d

Сгенерированный URL-адрес перенаправления авторизации:

http://twitter.com/oauth/authorize? oauth_token = EpyBg3nJGOmtmBjRUAsqqaGHARb2F2F2VcccqHkwio & oauth_access_type = написать

Авторизованное экранное сообщение: "Приложение TweeVerbs.com(Development), похожее на возможность доступа и обновления ваших данных в Twitter. Это приложение планирует использовать Twitter для входа в систему в будущем Выйдите из системы, если вы хотите подключиться к другой учетной записи, кроме Sironfoot.

Получить токен доступа:

HTTP://twitter.com/oauth/access_token oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q & oauth_nonce = 2016804 & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1244567166 & oauth_token = EpyBg3nJGOmtmBjRUAsqqaGHARb2F2F2VcccqHkwio & oauth_version = 1,0 & oauth_signature =% 2bEVQUxUPLT% 2b% 2bkfaG0Vq1YJZXcAw % 3d

Вызов API обновления состояния: URL - http://twitter.com/statuses/update.xml данные POST - oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q & oauth_nonce = 5707692 & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1244567268 & oauth_token = 19130957-nb89DjZhjCAzcbHUa96yRWHqlQFQIJ0AKyXpqnHt1 & oauth_version = 1,0 & статус = HelloWorld & oauth_signature = WQA% 2bWY0IxveeSJ7G3Ewy3whh1sE% 3d

4b9b3361

Ответ 1

Не знаю, в чем проблема, но я удалил свою регистрацию на Твиттере (вам нужно зарегистрировать приложения в Twitter, чтобы получить ключи OAuth и т.д.), а затем воссоздал его. Теперь он работает нормально. Странно, вероятно, проблема с подключением Twitter.

Я также использую Tweetsharp (http://tweetsharp.com/), очень рекомендую его, он получил хороший свободный API. Примечание: переход на Tweetsharp не был исправлением, я уже переключился и имел ту же проблему, пока я не удалю и не восстановил регистрацию приложений в Twitter.

Ответ 2

Если вы разрешили вашему приложению получать доступ к вашей учетной записи Twitter, когда приложение было настроено в режиме "только для чтения", и вы получаете сообщение об ошибке "Только для чтения приложение не может POST" после изменения параметров приложения для "чтения и записи" "тогда вам нужно отменить доступ к приложению на https://twitter.com/settings/connections, а затем повторно авторизовать его." Read only" access_token имеет тенденцию быть липким, пока вы не отмените его.

Ответ 3

  • Перейдите к http://www.twitter.com/oauth_clients
  • Выберите свое приложение.
  • Изменить настройки приложения.
  • Задайте тип доступа по умолчанию для чтения и записи.
  • Сохранить и запустить.

Надеюсь, что это поможет.

Ответ 4

плюс также посмотреть, синхронизируется ли ваша система CLOCK с Интернетом; на окнах вы можете сделать это, настроив настройки времени даты

потому что если CLOCK не синхронизирован, вы получите 401 несанкционированное исключение; удачи приветствия

Ответ 5

Я не делаю этого несколько раз, без успеха, я получаю исключение 401, запрашивая токен доступа из твиттера.

Я использую Tweetsharp, а также вас.