Omniauth, Devise, руководство по интеграции с Facebook не работает

Я запустил совершенно новое приложение Rails и Facebook и следовал этому руководству, чтобы письмо.

Я вижу, что пользователь создается и даже становится текущим_пользователем для перенаправления после аутентификации, однако он не сохраняется. Как только я нажимаю другое действие контроллера, он снова перенаправляет и говорит, что мне нужно войти.

Я бы опубликовал свой код, если бы подумал, что он будет полезен, но единственные различия между моим и тем, что вы видите в этой вики ( https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview ) — это операторы put перед фильтрами и методами.

Я не уверен на 100%, как работает devise с omniauthable, но я заметил, что в своем методе self.find_for_facebook_oauth он принимает current_user в качестве второго аргумента и никогда не использует его в методе. Кроме того, в отличие от других решений для аутентификации, я нигде не вижу, чтобы он проверял существующий сеанс пользователя, хотя я считаю, что devise должен позаботиться об этом за вас.

Редактировать

Теперь я почти уверен, что с omniauthable что-то невероятно не так. Я только что добавил следующее в свой OmniauthCallbacksController

def facebook
  sign_in_and_redirect :user, User.first
end

По сути, это должно просто войти в систему первого пользователя независимо от информации. Это делает и перенаправляет меня на страницу в моем контроллере приветствия, однако, когда я пытаюсь выполнить другое действие в этом контроллере, мне снова говорят, что мне нужно войти в систему. Я действительно понятия не имею, как теряется current_user .


person Aaron    schedule 01.07.2012    source источник


Ответы (2)


Существует очень мало ресурсов о том, как использовать универсальный модуль Devise. Возможно, вы захотите взглянуть на https://gist.github.com/993566 и http://edmiston.id.au/post/9204306833/omniauthable-my-version . В вики не хватает некоторых деталей.

person Himshwet    schedule 02.07.2012
comment
Я проверил оба этих поста и не нашел ничего другого, что можно было бы использовать для работы аутентификации Facebook. Я обновил свой пост, включив в него последнее отчаянное усилие, которое показывает мне, что что-то не так с универсальным доступом devise. - person Aaron; 03.07.2012
comment
Если код не является конфиденциальным, пожалуйста, загрузите проект на github, я хотел бы поиграть и посмотреть, смогу ли я сосредоточиться на проблеме. - person Himshwet; 03.07.2012
comment
Я посмотрел, и он работает нормально. Я скопировал стратегию facebook для github, так как давно деактивировал свою учетную запись facebook. Кажется, нет никаких проблем. Я создал новый контроллер Home#index и скопировал содержимое представления welcome#index в home#index. Я вошел в систему через github и был перенаправлен на страницу welcome#index. Затем я указал в своем браузере на /home/index, и мне снова были представлены данные моего сеанса. Извините, не могу понять, что не так. - person Himshwet; 03.07.2012
comment
Есть ли дома before_filter :authenticate_user! ? - person Aaron; 03.07.2012
comment
Мои извинения за задержку. Я разверну приложение еще раз и сообщу о результатах завтра. - person Himshwet; 04.07.2012
comment
@Aaron Репозиторий больше не существует на github. Если вы нашли решение самостоятельно, пожалуйста, напишите ответ. - person Himshwet; 05.07.2012
comment
Ах! Прости за это. В отпуске я занимался чисткой цифровой и нецифровой жизни и случайно наткнулся на эту. Спасибо за вашу помощь с этим кстати. - person Aaron; 05.07.2012

Извините, я не могу ответить на ваш вопрос, но, возможно, вам следует проверить http://railscasts.com/, есть несколько замечательных видеоуроки по интеграции с facebook.

person Florian Widtmann    schedule 02.07.2012
comment
Если это видео, о которых я думаю, то они были сделаны до того, как у Devise появилась опция :omniauthable. Я могу просто использовать другое решение, так как мне не нужны все функции Devise, но я очень хочу узнать, почему собственное прохождение Devise не работает. - person Aaron; 02.07.2012