Как правильно использовать OmniAuth с Rails 2 - PullRequest
2 голосов
/ 14 июля 2011

Я пытаюсь использовать стратегию OmniAuth (0.2.6) для моего приложения. Архитектура - Rails 2.3.10, а Rack - версия 1.1 (эта версия или выше требуется для OmniAuth). Проблема, которая возникает, заключается в том, что Rails не распознает мое перенаправление на «/ auth / provider». Фактическое сообщение об ошибке: «Не найдено ни одного маршрута» / auth / casport ». Несмотря на то, что эта ошибка генерируется, кажется, что код выполняется после этой точки вплоть до этой ошибки:« request.env ['omniauth.auth'] », который Я почти уверен, что он не распознает ключ "omniauth.auth" для хэша env. У меня такое ощущение, что OmniAuth не загружается должным образом. Я тестировал ту же стратегию и кодовую базу с Mongrel и Webrick и я получаю идентичные сообщения об ошибках.

Вот мой инициализатор OmniAuth (config / initializers / omniauth.rb):

ActionController::Dispatcher.middleware.use OmniAuth::Builder do
  provider :casport, :setup => true
end

У меня определенно есть маршруты в местах для auth / casport / setup и auth / casport / callback.

Я также попробовал этот подход: Как реализовать OmniAuth на Rails 2.2?

config.middleware.use OmniAuth::Builder do
  provider :casport, :setup => true
end

, поместив этот код промежуточного программного обеспечения в файл config / environment / development.rb.

Есть ли у кого-нибудь мысли о том, что я могу делать неправильно? Спасибо!

Редактировать: Я также пробовал этот подход Кто-нибудь использовал omniauth с рельсами 2.3.8?

ActionController::Dispatcher.middleware.use OmniAuth::Strategies::Casport = {
  :setup => true
}

и это возвращает ошибку чтения: "NoMethodError: неопределенный метод 'new' для #Hash ...

Редактировать 2: Я обновился до Rails 2.3.10, поскольку OmniAuth не совместим с Rails 2.3.4.

1 Ответ

2 голосов
/ 16 июля 2011

Я создал проблему на странице OmniAuth's Github https://github.com/intridea/omniauth/issues/397, с указанными выше деталями, и это ответ Михаэля Блея, создателя OmniAuth:

"OmniAuth официально никогда не поддерживал Rails 2.3.х - я слышал, что некоторым людям повезло с этим, но это не то, что гарантировано. Извините!Чтобы гарантировать правильную работу, необходим Rails 3.

...