Проблема, с которой вы, возможно, сталкиваетесь, заключается в том, что обнаружение подделки в Rails CSRF приводит к сглаживанию некоторой части вашей аутентификации, поскольку запросы поступают как HTTP-метод POST.
Первая строка в вашем ApplicationController, вероятно, являетсякак:
class ApplicationController < ActionController::Base
protect_from_forgery
[...]
Удалите эту строку 'protect_from_forgery' и посмотрите, поможет ли это в вашей проблеме.Если это так, вернитесь назад и настройте его на более ограниченной основе (только соответствующие контроллеры, см. Документацию здесь: http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html)
Есть отличный пример для получения Omniauthработает на http://www.communityguides.eu/articles/16,, а полный пример кода на https://github.com/markusproske/omniauth_pure. На этом они имеют следующее:
class ServicesController < ApplicationController
before_filter :authenticate_user!, :except => [:create, :signin, :signup, :newaccount, :failure]
protect_from_forgery :except => :create
Вам нужен какой-то вариант обеих этих строк, чтобы сделать omniauth,Фейсбук и рельсовые сессии хорошо играют вместе.Если это не сработает для вас, опубликуйте свою информацию OmniAuth :: Builder из environment / production.rb (с подробностями XXXed вне) и любой другой связанный код в контроллере, который вы используете для аутентификации, это будет полезно для отладки этого.
При разработке приложений rails с использованием facebook может быть проще отлаживать с помощью http://tunnlr.com или другой службы (или просто туннеля ssh http://blog.kenweiner.com/2007/09/reverse-ssh-tunnel-for-facebook.html), который позволяет запускать отладчик на локальном компьютере., это очень полезно для выяснения подобных проблем.