GaelykでTwitter4JのOAuth認証を使ってみる
微妙に難しいとか面倒とか感じるOAuth認証ですが、やってみたらあっさりでした
やってる事はサンプルを殆どそのままですが、Groovyで省略できるところを省略して書いてみたので、ノイズが少なくなってると思います。その分例外処理とかも無いので、Twitterがエラー返したらずっこけますが。
実装
oauth.groovy にアクセスするとTwitterの認証画面に移動します。
def twitter = new twitter4j.TwitterFactory().instance request.session.setAttribute "twitter", twitter def callbackURL = request.requestURL callbackURL.replace(callbackURL.lastIndexOf("/"), callbackURL.length(), "") callbackURL.append "/callback.groovy" def requestToken = twitter.getOAuthRequestToken callbackURL.toString() request.session.setAttribute "requestToken", requestToken response.sendRedirect requestToken.authenticationURL
認証が通ったら callback.groovy に戻ってきます。
def twitter = request.session.getAttribute "twitter" def requestToken = request.session.getAttribute "requestToken" def verifier = request.getParameter "oauth_verifier" twitter.getOAuthAccessToken requestToken, verifier request.session.removeAttribute "requestToken" response.sendRedirect(request.contextPath + "/timeline.groovy")
timeline.groovy では homeTimeline を取得するだけ。
def twitter = request.session.getAttribute "twitter" request.setAttribute 'timeline', twitter.homeTimeline forward '/timeline.gtpl'
timeline.gtpl で表示して終了。
<% include '/WEB-INF/includes/header.gtpl' %> <h1>Twitter Timeline</h1> <% request.getAttribute('timeline').each { out.print "@${it.user.screenName} ${it.text}<br>" } %> <% include '/WEB-INF/includes/footer.gtpl' %>
これだけです。
とりあえず認証はいけたので、色々出来るようになりました。
ソース
一応GitHubに放り投げてます。consumerKey/consumerSecret を書けばそのままで多分動きます。
https://github.com/irof/gaelyk-sandbox