次のコードがあります。
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :current_user
def facebook_cookies
@facebook_cookies ||= Koala::Facebook::OAuth.new.get_user_info_from_cookie(cookies).symbolize_keys!
end
def current_user
begin
# allow for ?access_token=[TOKEN] for iOS calls.
@access_token = params[:access_token] || facebook_cookies[:access_token]
@graph = Koala::Facebook::API.new(@access_token)
# TODO: move this to session[:current_user]..
@current_user ||= User.from_graph @graph.get_object('me', { fields: 'id,first_name,last_name,gender,birthday' })
rescue
nil # not logged in
end
end
def authenticate
redirect_to(root_url) if current_user.nil?
end
end
(ここで説明されているようにコアラをセットアップしましたhttps://github.com/arsduo/koala/wiki/Koala-on-Rails )
私がやろうとしていることはかなり単純なので、OmniAuth を紹介したくはありません。上記のコードは機能しますが、問題は、ページの読み込みごとに Facebook を呼び出していることです = よくありません。ユーザーが認証された後、保存session[:user_id]
してから、後続の各リクエストを呼び出す必要があると思いますか?User.find(session[:user_id])
これを解決する最も効率的な方法を誰かが提案できますか?