#chiroito ’s blog

Java を中心とした趣味の技術について

GAE+JRuby+Rails GAEユーザ情報の取得

目的

GAE上で動くRailsのコントローラでGAEのユーザ情報を取得する。

環境

appengine-sdk 1.4.2
Ruby on Rails 2.3.11
Ruby 1.8.7
Rack 1.2
JRuby Runtime 1.6.0
JRuby-Rack 1.0.5

概要

 GAEのユーザ情報はユーザサービスからユーザ情報を取得します。

ユーザサービスとユーザ情報の取得

 1行目はJRuby側でcom.google.appengine.api.users.UserServiceFactoryクラスを使用できるようにします。javaでは一般的な文ですが分からない場合はおまじないだと思って下さい。
 2行目でファクトリーからユーザサービスを取得し、3行目でユーザ情報を取得しています。
import com.google.appengine.api.users.UserServiceFactory
userService = UserServiceFactory.getUserService()
userService.currentUser()

サンプルソース

 このサンプルソースではユーザ情報を取得してEメールとニックネームを画面へ出力するサンプルです。@userが持つメソッドはcom.google.appengine.api.usersクラスのjavadocをご覧下さい。

books_controller.rb
import com.google.appengine.api.users.UserServiceFactory

class BooksController < ApplicationController
def index
userService = UserServiceFactory.getUserService()
@user = userService.currentUser()
@books = Book.all

respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @books }
end
end
#(略)
end
index.html.erb

Listing books


<% if @user != nil %>
E-Mail:<%=h @user.getEmail() %>
Nickname:<%=h @user.getNickname() %>
<% end %>
#(略)

参考

GAE on jRuby で Google アカウント認証をやってみる - @sugamasao.blog.title # => ”コードで世界を変えたい”
Google アカウント Java API 概要 - Google App Engine - Google Code
User