2013-11-20 2 views
0

현재 Ruby를 사용하여 좋은 비트 작업을하고 보안을 위해 Google 앱 Omniauth 구현을 사용합니다. 현재 사이트에 로그인 한 사용자를 보여주는 약간의 흔적을 남기고 싶습니다. 내가 알아낼 수없는 유일한 방법은 현재 로그인 한 사용자의 이름을 반환하고 표시하는 방법입니다.omniauth-google-apps를 통해 로그인 한 사용자 이름을 얻으려면 어떻게해야합니까?

나는이 기술을 사용하지 않는 : http://matt.aimonetti.net/posts/2013/01/30/omniauth-and-google-apps/

로그인 검사에 대한 나의 기술은 하나 개의 간단한 성명 :

Rails.env.development? ? 
    authorize({email: '[email protected]', name: 'dev'}) : 
    unless logged_in? 
     redirect_to '/auth/admin' 
    end 

P.S. "unless"선언을 수식어로 사용하면 런타임시 구문 오류가 반환되므로 그 이유는 그대로입니다.

도움을 주시면 대단히 감사하겠습니다. 당신이 당신의 경로를 정의 할 때

답변

1

당신은 예를 들어, 특정 컨트롤러 액션에서 Google 애플리케이션 콜백을 지적 할 것이다 :하여 OAuth는 과정의 마지막 부분으로,이 예에서는

post '/auth/google_apps/callback', to: 'sessions#create' 

, SessionsController#create이 될 것입니다 라는.

OmniAuth가 채우는 요청 매개 변수를 env[omniauth.auth]에 쿼리 할 수 ​​있습니다. 그것은 당신이 사용자의 이름과 성을 찾을 수 있습니다,이 해시의 :

email  = env['omniauth.auth']['info']['email'] 
first_name = env['omniauth.auth']['info']['first_name'] 
last_name = env['omniauth.auth']['info']['last_name'] 

내가 권하고 싶습니다이 주제에 정말 유용한 Railscast 있습니다.

http://railscasts.com/episodes/241-simple-omniauth

관련 문제