Помощь Использование Devise со встроенной поддержкой Omniauth - PullRequest
8 голосов
/ 02 марта 2011

Я пытался следовать https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview,, но каким-то образом, когда я смотрю на сгенерированные маршруты, я вижу только путь обратного вызова, а не путь авторизации (и действительно я получаю ошибку в представлении со ссылкой user_omniauth_authorize_path).

Я предполагаю, что это может быть проблема версий OmniAuth и Devise (, поскольку после 0.2.0.beta Omniath разрешает настраиваемую настройку, и должны быть определены маршруты ). Однако при попытке использовать более старую версию OmniAuth я получаю сообщение об ошибке "You are using an old OmniAuth version, please ensure 0.2.0.beta or later installed.".

Я пытался работать с мастером Devise, 1.2.rc и веткой omniauth, а также со всем гемом omniauth (после 0.2.0.beta) и с 'oa-oauth', но безуспешно. Я также попытался определить маршрут:

match '/users/auth/:action/', :to => 'users/omniauth_callbacks#action', :as => 'user_omniauth_authorize'

Это помогло с маршрутом, но при нажатии на ссылку я получил ошибку, что devise не может найти отображение. Как ни странно, изменение контроллера в devise_for на недопустимый (например, добавление «/» перед users / omniauth_callbacks) привело к ошибке в первый раз («Имя контроллера не должно начинаться с косой черты»), но небольшая перезагрузка фактически отправлена меня на фейсбук и обратно (но, естественно, маршрут обратного вызова не был определен).

Я новичок в Ruby, и не совсем уверен, куда я иду отсюда. Любая помощь будет оценена.

Ответы [ 2 ]

6 голосов
/ 03 марта 2011

Этот метод определяется devise , а не через маршруты. Поэтому он не будет отображаться при запуске rake routes. Этот метод использует один из oauth-провайдеров, настроенных вами в config / initializers / devies.rb. Например, если вы определили следующее в devise.rb:

config.omniauth :facebook, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET

Затем вы должны создать ссылку авторизации следующим образом:

<%= link_to "Facebook Sign in", user_omniauth_authorize_path(:facebook) %>
0 голосов
/ 14 октября 2011

Моя проблема была из-за разных версий omniauth и устройства. Наконец-то сработало использование этой конфигурации в моем gemfile:

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
gem 'omniauth', '>=0.2.0.beta'
gem 'oa-oauth', :require => 'omniauth/oauth'

подробнее о моей реализации вы можете узнать здесь .

...