사용자 지정 oauth 공급자를 통해 인증하려고하는 응용 프로그램에서 작업하고 있는데 다른 서버에 설치했습니다.RefineryCMS : Devise Omniauth 콜백 오버라이드
RefineryCMS를 사용하여이 사용자 정의 로그인을 통합하려고합니다. 나는 나의 노선 설치가있다, 그러나 무엇인가의 이유로 그것은 RefineryCMS로 건설 된 계획 노선을 따르는 것을 아직도 시도하고있다. 콜백
<p><%= link_to "Sign in with Olympus", user_omniauth_callback_path(:olympus) %></p>
올림푸스에 대한
Routes.rb
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
devise_scope :users do
match '/users/auth/:provider', :to => 'users/omniauth_callbacks#passthru'
end
링크는 지금은 프로젝트의 코드 명이다.
Omniauth 콜백 컨트롤러 : 레일의를 통해
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def olympus
auth = env["omniauth.auth"]
ap auth
end
def passthru
render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
end
end
로그 링크가 클릭되면 :
Started GET "https://stackoverflow.com/users/auth/olympus/callback" for 127.0.0.1 at 2011-08-12 07:52:09 -0500
Processing by Devise::OmniauthCallbacksController#failure as
SQL (0.7ms) SHOW TABLES
SQL (0.6ms) SHOW TABLES
Page Load (0.3ms) SELECT `pages`.`id`, `pages`.`depth`, `pages`.`parent_id`, `pages`.`lft`, `pages`.`rgt`, `pages`.`link_url`, `pages`.`menu_match`, page_translations.title as page_title FROM `pages` INNER JOIN `page_translations` ON `page_translations`.`page_id` = `pages`.`id` WHERE `pages`.`draft` = 0 AND `pages`.`show_in_menu` = 1 AND `page_translations`.`locale` = 'en' ORDER BY lft ASC
Slug Load (0.1ms) SELECT `slugs`.* FROM `slugs` WHERE (`slugs`.`sluggable_id` IN (1,3) and `slugs`.`sluggable_type` = 'Page' AND (`slugs`.`locale` = 'en')) ORDER BY id DESC
Slug Load (0.2ms) SELECT `slugs`.* FROM `slugs` WHERE (`slugs`.sluggable_id = 3 AND `slugs`.sluggable_type = 'Page') ORDER BY id DESC
SQL (1.3ms) describe `roles_users`
Role Load (0.1ms) SELECT `roles`.* FROM `roles` WHERE `roles`.`title` = 'Refinery' LIMIT 1
SQL (1.4ms) describe `roles_users`
User Load (0.2ms) SELECT * FROM `users` INNER JOIN `roles_users` ON `users`.id = `roles_users`.user_id WHERE (`roles_users`.role_id = 1)
Redirected to http://localhost:3000/users/login
그래서 그 여전히 RefineryCMS을 통해 고안 :: OmniauthCallbacksController 통과하려고 .. 누구든지이 문제를 해결하거나이 장치 컨트롤러를 무시하는 방법을 알고 있습니까?
나는 oauth 공급자/클라이언트와 작업하는 것이 완전히 새로운 것이라고 말하고 싶습니다. 나는 페이스 북과 트위터로 일해 왔지만, 처음부터 그것들을하는 것은 내가 새로운 것입니다. Devise/Omniauth와 함께 일하는 것. 그래서 내 무지를 변명해라. 감사! 이 글을 읽어