Я запустил совершенно новое приложение 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 .