12

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

4

5 に答える 5

15

何が問題なのかわかりませんが、Twitter のアプリケーション登録を削除して (OAuth キーを取得するには、Twitter にアプリケーションを登録する必要があるなど)、再度作成しました。今では正常に動作します。奇妙なことに、おそらく Twitter が台無しになっている問題です。

私は Tweetsharp ( http://tweetsharp.com/ ) も使用しています。これを強くお勧めします。流暢な API が備わっています。注: Tweetsharp への切り替えは解決策ではありませんでした。既に切り替えていて、Twitter でアプリの登録を削除して再作成するまで、同じ問題が発生していました。

于 2009-06-09T21:39:58.407 に答える
8

アプリケーションが「読み取り専用アクセス」モードに設定されているときにアプリケーションに Twitter アカウントへのアクセスを許可し、アプリケーション設定を「読み取りおよび書き込みアクセス」に変更した後に「読み取り専用アプリケーションは POST できません」というエラーが表示された場合は、次のようになります。https://twitter.com/settings/connectionsでアプリケーションへのアクセスを取り消してから、再認証する必要があります。「読み取り専用」の access_token は、取り消すまで固執する傾向があります。

于 2010-04-29T21:19:25.273 に答える
3
  • http://www.twitter.com/oauth_clientsにアクセスします。
  • アプリを選択します。
  • アプリケーション設定を編集します。
  • デフォルトのアクセス タイプを読み取りと書き込みに設定します。
  • 保存して実行します。

お役に立てれば。

于 2010-08-26T09:35:21.947 に答える
1

さらに、システムのクロックがインターネットと同期しているかどうかも確認してください。Windowsでは、日時設定を調整することで実行できます

CLOCK が同期されていないと、401 の不正な例外が発生するためです。幸運を祈ります

于 2010-05-11T07:14:04.860 に答える
0

Twitter からアクセス トークンを要求しているときに 401 例外が発生しました。

私もあなたと同じようにTweetsharpを使っています。

于 2010-02-25T23:47:51.970 に答える