• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaでTwitterのOAuth認証を用いたつぶやきのポストを実現)

javaでTwitterのOAuth認証を用いたつぶやきのポストを実現

このQ&Aのポイント
  • javaでTwitterのOAuth認証を用いたつぶやきのポストを実現したいと考えています。アクセストークンとアクセストークンシークレットは取得できたのですがそれを用いてつぶやきをポストすることができません。
  • OAuthのライブラリを使えばポストすることは出来たのですができればライブラリを使わずに実現したいと思っています。
  • おそらくポストのやりかたがおかしいと思うのですが何が悪いのかわかりません。javaはあまり得意ではないためお見せするのも恥ずかしいソースですがおかしなところを指摘していただけるとありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

401ってことは確かに認証の問題ですね。 とりあえず,signature base stringは正しいですか。 OAuthの情報はRFC 5849に沿って, ・Consumer Key : dpf43f3p2l4k3l03 ・Consumer Secret : kd94hf93k423kf44 ・Access Token : nnch734d00sl2jdk ・Access Token Secret : pfkkdhi9sl3r4s00 ・Timestamp : 137131202 ・Nonce : chapoH を利用してHMAC-SHA1の署名を作成するとして, http://api.twitter.com/1/statuses/update.xml に status=test をPOSTする場合, ・signature base string ・signature はそれぞれどうなりますか。 こちらで試したところでは, [oauth_versionを含める場合] ・signature base string POST&http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.xml&oauth_co nsumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3DchapoH%26oauth_signature _method%3DHMAC-SHA1%26oauth_timestamp%3D137131202%26oauth_token%3Dnnch 734d00sl2jdk%26oauth_version%3D1.0%26status%3Dtest ・signature E0g7lPZHabrs4Ic7ZDoS/EWCLsA= [oauth_versionを含めない場合] ・signature base string POST&http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.xml&oauth_co nsumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3DchapoH%26oauth_signature _method%3DHMAC-SHA1%26oauth_timestamp%3D137131202%26oauth_token%3Dnnch 734d00sl2jdk%26status%3Dtest ・signature XQoeK8S6ch3MMQZHO1XaDGVh4/M= となりました。signature base stringの改行は,便宜的なものなので削除してください。 もちろん,Consumer Key等はtwitterから提供されたものではないので送信はできませんが, updateが実際に行えるコードの署名ルーチンに流して生成しているのでおそらく間違っていないと思います。

pirorirori
質問者

お礼

わざわざ試していただいてありがとうございます。私が作っていたSignature Base Stringの各要素の順番が間違っていたようで、示していただいた順番で試みた結果認証エラーが無くなり無事投稿することができました。本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

エラーの詳細はなんでしょうか。 例外を送出したのであれば,その例外の情報を書いてください。 # 例外情報はバグを潰すための宝の山です。 で,urlCon.connect()が無いようですが。 ちなみに,twitter APIのendpointは現在, http://api.twitter.com/1/ になっています。 SITE: POST statuses/update | dev.twitter.com http://dev.twitter.com/doc/post/statuses/update

pirorirori
質問者

補足

回答ありがとうございます。以下が送出されたエラーです。 java.io.IOException: Server returned HTTP response code: 401 for URL: http://api.twitter.com/1/statuses/update.xml 認証に失敗しているのようで、ポストする内容やヘッダなどに問題があるのかと思っています。教えていただいたサイトも確認しているのですがどこに問題があるのか分かりませんでした。 教えていただいたurlCon.connect()も試してみましたが特にかわりありませんでした。 URLはどちらでも利用出来るようでしたので前述のものを使っていました。ご指摘いただいたURLでも同じ結果になりました。

すると、全ての回答が全文表示されます。

関連するQ&A