- 2008/01/22
- Ruby
TwitterのAPIを使ってなんか作ってみたいなぁと常に考えてみた結果、自分のFollowerさんの居場所が見られたら面白いかも…ということで、GoogleMaps + Twitterのマッシュアップに挑戦する事にしました。
まず、Twitter API最大の問題として、指定ユーザの情報を取得するには、ログインIDとパスワードが必要だという事。(ただし、すでにTwitterにログインしている状態ならば自分のFollower一覧などは利用できるみたいです)そこで自分のTwitterアカウントを使って、TwitterにBASIC認証をしてAPIを利用する事にしました。
RubyでBASIC認証
取得したいURIは http://twitter.com/statuses/friends/ユーザID.xml です。ここにTwitterをログアウトした状態(クッキーがない状態)でアクセスすると、TwitterのログインID(メールアドレス)をパスワードを求められます。これをRuby上で手続きをします。
#BASIC認証を開始
req = Net::HTTP::Get.new('/statuses/friends/' + userid + '.xml')
req.basic_auth("zaru@example.com", "password")
Net::HTTP.start(address, 80) {|http|
xml = http.request(req)
}
たったこれだけで、認証が通って指定URIドキュメントを取得する事が出来ます。無事にXMLデータを取得したらあとはXMLを解析するだけです。
XMLを解析する
doc = REXML::Document.new xml.body
#ユーザデータ取得
doc.elements.each('users/user') do |userD|
#名前を取得
userD.elements.each('name') do |e|
print e.text.to_s
end
#ロケーションを取得
userD.elements.each('location') do |e|
print e.text.to_s
end
#アイコンURIを取得
userD.elements.each('profile_image_url') do |e|
print e.text.to_s
end
end
ここらへんはもっとスマートにデータを取得できそうな気もするのですが…。
とりあえず、これだけデータが揃えばRubyでの役割は終了です。あとは、HTMLを書き出してGoogleMapsAPIに渡してやれば完了です。GoogleMapsAPIについては次の記事でまとめたいと思います。
成果物 Twitter Maps
名前を Twitter Maps にしました。
まだ、アルファバージョンという事で、単純にアイコンを表示させているだけです。GoogleMapsの機能をもっと調べて、面白い機能がのせられないか考え中です。