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
Ответы
Ответ 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, а также вас.