Google App Engine では google アカウントを用いた認証ができるようである。それを Jrubyから利用してみるという事で試してみた。
(ハッカソン用の事前調査用の記事です)
使い方
インストール
必要なのは、appengine-apis の user.rb ライブラリ
- Gemfile
# Critical default settings: disable_system_gems disable_rubygems bundle_path ".gems/bundler_gems" # List gems to bundle here: gem "appengine-rack" gem "appengine-apis" gem "sinatra"
- config.ru
require 'appengine-rack'
AppEngine::Rack.configure_app(
:application => "application-id",
:precompilation_enabled => true,
:version => "1")
require 'app.rb'
configure :development do
class Sinatra::Reloader < ::Rack::Reloader
def safe_load(file, mtime, stderr = $stderr)
::Sinatra::Application.reset!
super
end
end
use Sinatra::Reloader
end
run Sinatra::Application
アプリケーション
- app.rb
require 'sinatra'
require 'appengine-apis/users'
helpers do
include Rack::Utils
alias_method :h, :escape_html
end
get '/' do
@user_name = AppEngine::Users.current_user
if @user_name
@url = AppEngine::Users.create_logout_url('/')
@login_or_out = "logout"
else
@url = AppEngine::Users.create_login_url('/')
@login_or_out = "login"
end
erb %{
<html>
<head></head>
<body><%= h @user_name && @user_name.email %><a href="<%= @url %>"><%= @login_or_out%></a></body>
</html>
}
end
AppEngine::Users.current_user
現在のユーザ情報が取得できる。
もし、ログインしていない場合は nil が返却される。
ログイン時はユーザ情報が取得でき、AppEngine::Users.current_user.emailでメールアドレスが取得できる。
AppEngine::Users.create_logout_url( path )
ログアウトのURLを取得する。 ログアウト後、どのpathへ遷移するかを、pathで指定する
AppEngine::Users.create_login_url( path )
ログインのURLを取得する。 ログイン後、どのpathへ遷移するかを、pathで指定する
おわりに
これを使えば、googleアカウントで認証ができるようになる。 お手軽認証にはもってこいだと考える。


コメントする