Railsもいいけど最近Androidでも活躍しているtwitter4jを使ってみたかったのでtwitter4jを使用して
ツイートをポストするWebアプリをHeroku上にデプロイしてみた。
twitter4jの作者である@yusukeさんのサンプルソースを流用するのでだいたい30分くらいで出来る。
事前準備
- Gitインストール
- Maven 3インストール
- Herokuのアカウント作成
- herokuコマンドインストール
Herokuアプリケーションの作成
$ heroku create --stack cedar Creating blazing-mist-9962... done, stack is cedar http://blazing-mist-9962.herokuapp.com/ | git@heroku.com:blazing-mist-9962.git
Twitterサービスの登録
https://dev.twitter.com/apps/newにアクセスして今回作成するサービスの情報を入力し登録する。
Callback URLはHerokuアプリケーションの作成時に表示されたURL + callback
Name(アプリケーション名):u1aryzの備忘録とか(任意)
Description(アプリケーションの説明):Herokuからtwitter4jを使用してツイートをポストするサンプル。(任意)
WebSite(ウェブサイトURL):http://u1aryz.blogspot.com/(任意)
Callback URL(コールバックURL):http://blazing-mist-9962.herokuapp.com/callback
登録し終わったらSettingsからApplication TypeをRead and Writeに変更。
Consumer keyとConsumer secretは後で使用するのでメモ。
twitter4jのサンプルソースをダウンロード
GitHubで公開されているtwitter4jのサンプルソースをダウンロードする。
yusuke / sign-in-with-twitter
Heroku(Jetty)用に修正&追加
pom.xml(修正)
<packaging>war</packaging> ↓変更 <packaging>jar</packaging> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> </dependency> ↓変更 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency>
pom.xml(追記)
dependenciesの子ノードに下記を追加 <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>7.4.5.v20110725</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-2.1-glassfish</artifactId> <version>2.1.v20100127</version> </dependency> build,pluginsの子ノードに下記を追加 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.1.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>assemble</goal> </goals> <configuration> <assembleDirectory>target</assembleDirectory> <programs> <program> <mainClass>twitter4j.examples.signin.StartServer</mainClass> <name>webapp</name> </program> </programs> </configuration> </execution> </executions> </plugin>
StartServer.java(新規)
package twitter4j.examples.signin; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.webapp.WebAppContext; public class StartServer { public static void main(String[] args) throws Exception { Server server = new Server(Integer.valueOf(System.getenv("PORT"))); WebAppContext context = new WebAppContext("src/main/webapp", "/"); context.setDescriptor("WEB-INF/web.xml"); server.setHandler(context); server.start(); server.join(); } }
twitter4j.properties(修正)
twitter4j.oauth.consumerKeyとtwitter4j.oauth.consumerSecretにそれぞれ上記で登録した内容を入れる。
入力したらファイル自体をプロジェクト直下に移動する。
Procfile(新規)
下記内容でプロジェクト直下に作成する。
web: sh target/bin/webapp
Herokuにデプロイ
デプロイといってもソースをプッシュするだけ。
$ cd プロジェクトディレクトリ $ git init $ git add . $ git commit -m "Generate twitter app." $ git remote add heroku git@heroku.com:blazing-mist-9962.git $ git push heroku master
ツイートしてみる
$ heroku open
ログイン後、コールバックURLが呼ばれ下記のようなページが表示される。
公式Twitterで確認出来る通り、ツイート出来ていることがわかる。
0 件のコメント:
コメントを投稿