Jruby on GAEで google アカウントを利用してみる

| コメント(0) | トラックバック(0) このエントリーを含むはてなブックマーク

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アカウントで認証ができるようになる。 お手軽認証にはもってこいだと考える。

トラックバック(0)

トラックバックURL: http://www.m-tea.info/mt-tb.cgi/72

コメントする

あわせて読みたいブログパーツ

このブログ記事について

このページは、k1ha410が2010年2月 3日 00:23に書いたブログ記事です。

ひとつ前のブログ記事は「JrubyからJavaのコードを呼び出してみた」です。

次のブログ記事は「IronRuby 1.0 RC2のリリース」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。