目的
GAE上で動くRailsのコントローラでGAEのユーザ情報を取得する。環境
appengine-sdk 1.4.2Ruby 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.UserServiceFactoryindex.html.erb
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
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