2

Omniauth를 내 3.1 프로젝트에 추가했는데 모두 정상적으로 작동합니다. 내가 hostname/auth/facebook을 방문했을 때 나는 페이스 북 계정에 대한 액세스 권한을 기대할 수있는 페이지로 이동했다.Omniauth 인증 경로의 이름을 지정할 수 있습니까?

나는 내가

<%= link_to 'Login with Facebook', facebook_login_path %> 

대신

<%= link_to 'Login with Facebook', '/auth/facebook' %> 

아니 내가 아는 큰 일을 쓸 수 그래서 내 link_to 헬퍼에 불구하고 그 길의 이름을 지정할 수 있습니다 궁금 해요하지만 내가 좋아하는 일관성.

get "auth/facebook", :to => "controller#action", :as => "facebook_login" 

그러나이 경우

은, 당신이 전송되는 URL이 실제로 응용 프로그램의 URL의 일부가 아닙니다 - 그러나 : 당신의 routes.rb 파일에서 :

+0

당신이 시도 가지고 응용 프로그램/헬퍼처럼 - 도우미 파일 중 하나에 도우미 메서드를 만드는 것입니다 : match =/'/ auth/facebook', : as => facebook_login – bor1s

+0

그래, 나는 그것을 시도했다. 컨트롤러는 슬래시로 시작할 수 없습니다. 슬래시를 사용하지 않으면 인증 컨트롤러가 없으므로 실패합니다! –

+0

그렇습니다. 라우트가 내부적으로'route.rb' 파일을 사용해야 할 필요가 있습니다. (들어오는 HTTP 요청을 REST 스타일로 변환하기 만합니다. 그리고 처리 할 컨트롤러와 액션이 있어야합니다). OAuth/OpenID의 경우 - 외부 서비스에 요청을 보냅니다. 따라서 할 수있는 일은'application_helper' 파일에 helper method say를 작성하는 것입니다 (def facebook_login_path "/ auth/facebook"; end) – bor1s

답변

3

는 일반적으로 당신은 이런 식으로 뭔가를 할 것입니다 페이스 북을위한 oauth URL. 따라서 경로를 만들 수 없습니다.

당신이 할 수있는 유일한 방법 - 지적 위의 주석처럼은 -?/application_helper.rb

def facebook_login_path 
    "/auth/facebook" 
end