[Twitter4J]2014年1月14日TwitterAPIの仕様変更でSSL必須となった件[Java]

twitterapi

某アプリのアクセスログを見ていて、なーんかツイッターからのアクセスが少ないような・・と思ってAPログを見てみると下記エラーがずらっと並んでいた。

2014-1-16 13:13:39.073 FATAL TwitterClient.main : Server returned HTTP response code: 403 for URL: http://api.twitter.com/1.1/statuses/update.json
Relevant discussions can be found on the Internet at:
	http://www.google.co.jp/search?q=b2b52c28 or

http://www.google.co.jp/search?q=10981ac7

TwitterException{exceptionCode=[b2b52c28-10981ac7 4ef6906d-026b39e1 4ef6906d-026b39df], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.3}

Server returned HTTP response code: 403 for URL: http://api.twitter.com/1.1/statuses/update.json
Relevant discussions can be found on the Internet at:
	http://www.google.co.jp/search?q=b2b52c28 or

http://www.google.co.jp/search?q=10981ac7

TwitterException{exceptionCode=[b2b52c28-10981ac7 4ef6906d-026b39e1 4ef6906d-026b39df], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.3}
	at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:192)
	at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
	at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)
	at twitter4j.TwitterImpl.post(TwitterImpl.java:1871)
	at twitter4j.TwitterImpl.updateStatus(TwitterImpl.java:241)
	at TwitterClient.main(TwitterClient.java:222)
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://api.twitter.com/1.1/statuses/update.json
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:36)
	at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:156)
	... 5 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://api.twitter.com/1.1/statuses/update.json
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at java.net.HttpURLConnection.getResponseCode(Unknown Source)
	at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:34)
	... 6 more

jsonの中身は以下
{"errors":[{"message":"Bad Authentication data","code":215}]}

                                
なんじゃこりゃ!という事でTwitterAPIのドキュメントを見てみると、
Restricting api.twitter.com to SSL/TLS traffic
というアナウンスがありました。

”2014年1月14日から、OAuthのすべてのステップとすべてのREST APIのリソースを含む、すべてのapi.twitter.comのURLに、TLS / SSL接続の制限が課されます。”
こういうことらしい。

僕が作ったツイートアプリは平文で送信していましたので、この制限に引っかかってエラーになっていました。しかも1日以上経ってからようやく気付きました。

それでは修正しましょう、という訳で、修正方法は単純にツイッターAPIをSSL通信するようにすればよいので、Java+Twitter4J環境の僕の場合は、以下のようにtwitter4j.propertiesに1行追加しただけで対応完了しました。

oauth.consumerKey=xxxxxxxxxxxxxxxxxxxxxx
oauth.consumerSecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
oauth.accessToken=0000000000-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
oauth.accessTokenSecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
http.useSSL=true	←こいつを追加

以上でうs。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>