Google App Engine + Twitter + OAuth
Google App EngineでOAuth認証になったTwitterにツィートする
半年前に自分用に書いたメモですが,いまのところはまだ有効な情報なのでアップしておきます.読みにくかったらすまぬ.
方針
ほとんどのサイトに書いてある情報は,Eclipseを用いてプロジェクトを作成するようになっている.でもわたしの場合は基本が分かっていないので,Eclipseはつかわずコマンドラインからするべきと判断.Eclipseはつかわなくても,antコマンドを使えば十分コマンドラインからでもプロジェクトが作れる.
注意点
antコマンドでGoogle App Engineをためす
- Google App EngineのSDKをダウンロードする.
- new_project_templateをもとにプロジェクトを新規作成.
- 他の資料と合わせるために,build.xmlの40行目のlocationを,"www"→"war"に変更するとよい.
- antのインストール
Google App Engine Javaで遊んでみる - syttruの日記
コンパイル
$ ant
ローカルで確認するため http://localhost:8080/ を有効にする
$ ../bin/dev_appserver.cmd ../アプリの名前/war
アップロード
$ ../bin/appcfg.cmd update war
Google App EngineからTwitterにツィートさせる
- Twitter4J 2.2以降はTwitterFactory.getOAuthAuthorizedInstance()がつかえないなど,大幅な仕様変更が行われているため,ほとんどのサイトは参考にならない.公式サイトすらあてにならない.
Twitter4J - A Java library for the Twitter API
OAuth - SANADAの実験工房
try{
TwitterFactory factory = new TwitterFactory();
Twitter twitter = factory.getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
twitter.setOAuthAccessToken(new AccessToken(TOKEN_KEY, TOKEN_SECRET));
twitter.updateStatus(message);
}catch(TwitterException e){
}
- twitter4j-core-2.2.3.jarをwar\WEB-INF\libにコピー.
- bulid.xmlの76行目あたりに次のテキストを追加すると,クラスパスが追加できる.
Herokuを使って1日1回名言をツイートするTwitter Botの作り方 - アインシュタインの電話番号☎
ログ出力
- cronで起動すると目では見られないので,ログ出力させよう.
import java.util.logging.Logger;
Logger logger = Logger.getLogger(this.getClass().getName());
logger.info(message);
さいごにメモ
- どうやらGAEはURLのキャッシュをしているようなので,ウェブサイトを参照するとその情報が古い場合がある.