エラー内容を追って見ると、getOAuthRequestTokenでTwitterExceotionが発生。
エラーの内容は以下
403:The request is understood, but it has been refused. An accompanying error message will explain why. This code is used when requests are being denied due to update limits (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following).エラー内容に記載してあるサイト(https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following)にアクセスするもtwitterのリミット制限に引っかかったようなエラー内容。
調査をしているとhttpsモードじゃないとエラーとなるような制限が加わったとかいう情報を海外で発見。
twitter4jでどうやってSSLにするのかよく分からなかったが、ConfigurationBuilderオプションでSSLモードが指定できることを発見。試してみたところうまく動いた。
修正前[ツイッターログイン部分]
ConfigurationBuilder cbuilder = new ConfigurationBuilder();
cbuilder.setOAuthConsumerKey(StringUtil.TWEET_CONSUMER_KEY);
cbuilder.setOAuthConsumerSecret(StringUtil.TWEET_CONSUMER_SECRET);
Configuration conf = cbuilder.build();
mOauth = new OAuthAuthorization(conf);
mOauth.setOAuthAccessToken(null);
String authUrl = null;
try {
authUrl = mOauth.getOAuthRequestToken(StringUtil.TWEET_CALLBACK_URL).getAuthorizationURL();
} catch (Exception e) {
Logging.e(e.toString());
return;
}
修正後
ConfigurationBuilder cbuilder = new ConfigurationBuilder();
cbuilder.setUseSSL(true);//2014年よりこれが無いとエラーとなる仕様に変わった。
cbuilder.setOAuthConsumerKey(StringUtil.TWEET_CONSUMER_KEY);
cbuilder.setOAuthConsumerSecret(StringUtil.TWEET_CONSUMER_SECRET);
Configuration conf = cbuilder.build();
mOauth = new OAuthAuthorization(conf);
mOauth.setOAuthAccessToken(null); // これをやらないと下記getOAuthRequestToken()で例外が発生する
String authUrl = null;
try {
authUrl = mOauth.getOAuthRequestToken(StringUtil.TWEET_CALLBACK_URL).getAuthorizationURL();
} catch (Exception e) {
Logging.e(e.toString());
return;
}
同じく投稿時にも同様のエラーが出ていたため修正!
修正前
//メッセージを投稿
ConfigurationBuilder confbuilder = new ConfigurationBuilder();
confbuilder.setOAuthAccessToken(oauthToken).setOAuthAccessTokenSecret(oauthTokenSecret)
.setOAuthConsumerKey(StringUtil.TWEET_CONSUMER_KEY).setOAuthConsumerSecret(StringUtil.TWEET_CONSUMER_SECRET);
//メッセージの取得
Twitter twitter = new TwitterFactory(confbuilder.build()).getInstance();
修正後
//メッセージを投稿
ConfigurationBuilder confbuilder = new ConfigurationBuilder();
confbuilder.setOAuthAccessToken(oauthToken).setOAuthAccessTokenSecret(oauthTokenSecret)
.setOAuthConsumerKey(StringUtil.TWEET_CONSUMER_KEY).setOAuthConsumerSecret(StringUtil.TWEET_CONSUMER_SECRET);
confbuilder.setUseSSL(true);//2014年よりこれが無いとエラーとなる仕様に変わった。
//メッセージの取得
Twitter twitter = new TwitterFactory(confbuilder.build()).getInstance();
上記で無事にエラー無く動作することを確認。