OAuthメモ2 JRuby on GAE/J でOAuth

OAuthを使ってGoogle App Engine上のJRubyからtwitterにポストする。RubyのコードをベースにURLFetchを使うように書き換えていたが、うまくいかないので、あきらめてTwitter4Jをラップすることにした。簡単にできた。

require 'java'

import 'twitter4j.TwitterFactory'
import 'twitter4j.TwitterException'
import 'twitter4j.http.AccessToken'

class Twitter4j
  def initialize(consumer_key, consumer_secret, access_key, access_secret)
    factory = TwitterFactory.new
    @twitter = factory.get_oauth_authorized_instance(
      consumer_key,
      consumer_secret,
      AccessToken.new(access_key, access_secret))
  end
  
  def post(text)
    begin
      @twitter.update_status(text)
    rescue TwitterException => ex
      c = ex.cause
      $servlet_context.log("Exception when posting '#{text}'")
      $servlet_context.log(c.get_message)
      raise "Post status failed : #{c.get_status_code}"
    end
  end 
end