Эта область, кажется, сильно изменчива. У меня были трудности с настройкой Rails 3, поскольку ни одна из основных библиотек Ruby facebook официально не обновлена, а новейшие не документированы.
То, как я работал с Rails 3, использовало Facebooker2 и Mogli. Я в основном взял код контроллера mogli + authlogic oauth , размещенный здесь , и соединил его с методами контроллера и помощника Facebooker2. Для Facebooker2 и Mogli нет документации (которую я знаю), но код Facebooker2 относительно прост.
Мне также пришлось вручную обработать некоторые из аутентификационных проверок, чтобы они активировались только для регистраций не из Facebook. Вот весь специфичный для authlogic код в пользовательской модели:
class User < ActiveRecord::Base
acts_as_authentic do |config|
config.validate_email_field = false
end
validates_length_of :email, :within => 6..100, :if => :is_not_fb_user?
validates_format_of :email, :with => Authlogic::Regex.email, :if => :is_not_fb_user?
validates_uniqueness_of :email, :if => :is_not_fb_user?
def is_fb_user?
return false if self.fb_uid.blank? || self.fb_uid == 0 || self.fb_at.blank?
return true
end
def is_not_fb_user?; !self.is_fb_user? end
def require_password?
if self.is_fb_user?
false
else
new_record? || password_changed? || send(crypted_password_field).blank?
end
end
end
Могут быть некоторые ошибки, и я подозреваю, что есть лучший способ приблизиться к этому.