Twitter の API と OAuth を使用して、ステータスの更新 (新しいツイート) を送信しようとしています。Shannon Whitley .NET コード例http://www.voiceoftech.com/swhitley/?p=681を使用しています(Twitter API ドキュメントで推奨されているとおり)。OAuth を使用して問題なく読み取る (GET) ことはできますが、http://twitter.com/statuses/update.xml 経由で (POST を使用して) ステータス更新を送信しようとすると、次の XML で 401 が返されます。
<?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 (開発者) によるアプリケーションは、アクセスする機能が必要です」とさえ書かれています。 Twitterでデータを更新してください。」
それでも、「読み取り専用アプリケーションは POST できません」と表示されます。なんと!?
顔が青くなるまで、このエラーメッセージをグーグルで検索しました。クエリ文字列パラメーターoauth_access_type=writeを、私が行った Twitter 承認ページに移動するリダイレクト URLに追加するように言っている場所を見つけましたが、それでも 401 が返されます。
それが役立つ場合は、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%2%flQd2%fSLCfzs8
生成された認証リダイレクト URL:
http://twitter.com/oauth/authorize?oauth_token=EpyBg3nJGOmtmBjRUAsqqaGHARb2F2F2VcccqHkwio&oauth_access_type=write
認証画面のメッセージ: 「TweeVerbs.com (開発) によるアプリケーションは、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
Status Update API call: URL - http ://twitter.com/statuses/update.xml POST data - oauth_consumer_key=tViV8vAt4cqSKbGdPGWT7Q&oauth_nonce=5707692&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1244567268&oauth_token=19130957-nb89DjZhjCAzcbHUa96yRWHqlQFQIJ0AKyXpqnHt1&oauth_version=1.0&status=HelloWorld&oauth_signature=WqA%2bWY0IxveeSJ7G3Ewy3whh1sE%3d