[ruby]gcalapiを使ってAuthSubログイン

photo by Martin LaBar

 昨日はすっごいがんばって自前でGoogleAuthSub認証を通すコードを書いたのですが。

今日、続きでカレンダーを扱おうとしたら、gcalapiに同じ内容のコードがあるのを発見してしまいました。

しかもこっちの方が明らかにきれいです。だったら最初からこっちでよかったんじゃん。

再発明しちゃった車輪をもてあそびつつ、gcalapiでAuthSub認証を使う方法を記述しておきます。

Googleの認証ページ用のURLを生成する

require ‘gcalapi’

require ‘googlecalendar/auth_sub_util’

@uri = GoogleCalendar::AuthSubUtil.build_request_url(

‘http://www.example.com/responce’,

‘http://www.google.com/calendar/feeds/’,

false, #use_secure

true #use_session

)

Googleから戻ってきたトークンをつかってセッショントークンをもらう

authsub_token = ”

one_time_token = params[:token]

session_token = GoogleCalendar::AuthSubUtil.exchange_session_token(one_time_token)

戻ってきたページのURLからワンタイムトークンを取り出すためにget_one_time_tokenというメソッドも用意されているのですが、railsであればparams[:token]でとる方がずっと早いですね。

セッショントークンをつかってカレンダーに予定を書き込む

require ‘gcalapi’

require ‘googlecalendar/auth_sub_util’

require ‘googlecalendar/service_auth_sub’

server = GoogleCalendar::ServiceAuthSub.new(session_token)

calendar = GoogleCalendar::Calendar.new(server, ‘http://www.google.com/calendar/feeds/default/private/full’)

event = calendar.create_event

event.st = Time.parse(“2008-09-19 20:00:01”)

event.en = Time.parse(“2008-09-19 22:00:01”)

event.title = “実験!”

event.desc = “こんにちはこんにちは! ”

event.save!

あとは基本的に、GoogleCalendar::Service の代わりにGoogleCalendar::ServiceAuthSubを使えばいいらしい。calendar_listが動かないのはしょうがないのかなぁ。