speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

GAE/JRubyでGoogleアカウントの認証

GAEではGoogleアカウントの認証機構を使うことができるので、自分で認証機能を実装する必要がない。というのを試してみたよ!

準備

$ mkdir test-hogehoge
$ cd test-hogehoge
$ appcfg.rb gem install sinatra appengine-apis

ソースコード

config.ru
require 'appengine-rack'
require 'app'

AppEngine::Rack.configure_app(
  :application => 'test-hogehoge',
  :version => 1)

run Sinatra::Application
app.rb
require 'rubygems'
require 'appengine-apis/users'
require 'sinatra'

# すべてのアクションを実行する前にログイン
# ログインしたら '/' へリダイレクト
before do
  unless AppEngine::Users.logged_in?
    redirect AppEngine::Users.create_login_url('/')
  end
end

# ここへ来るときにはログイン済みのはず
get '/' do
  user = AppEngine::Users.current_user
  "Hello, #{user.email}!"
end

# リンクとかないので直接URL入力で飛んでね!
get '/logout' do
  redirect AppEngine::Users.create_logout_url('/')
end

実行

まぁいつもどおりに。

$ dev_appserver.rb .  # ローカルで実行
$ appcfg.rb update .  # デプロイ

前みたいにしばらくはこちらで動いていますよっと。