API Graph Facebook с Rails и Authlogic - предпочтительная методология? - PullRequest
0 голосов
/ 18 июня 2010

Существует множество решений для Facebook + Rails, особенно Facebooker, но это и многие другие не совместимы с Rails 3. В настоящее время я использую Authlogic для аутентификации в своем приложении и хочу предоставить пользователям возможность Facebookвойти в систему. Я хочу найти лучший способ, чтобы FB и Authlogic шли вместе;сейчас я просто пишу свое собственное дополнение Authlogic для Facebook, но если это уже сделано, я не хочу переделывать чужую работу.Кто-нибудь знает что-нибудь подобное?

Ответы [ 3 ]

0 голосов
/ 14 августа 2010

Друг разработал этот драгоценный камень для нашего приложения, поэтому, возможно, он также полезен для вашего приложения: http://github.com/pfracarolli/facebook-graph.

0 голосов
/ 22 февраля 2011

Используйте Omniauth. По этому вопросу есть Railscast. Я считаю, что он даже использует его в сочетании с Authlogic:

http://railscasts.com/episodes/235-omniauth-part-1

Всего несколько строк вашего SessionsController и несколько строк в файле конфигурации в config / initializers / omniauth.rb, и вы более или менее сделали это.

0 голосов
/ 24 июня 2010

Эта область, кажется, сильно изменчива. У меня были трудности с настройкой 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

Могут быть некоторые ошибки, и я подозреваю, что есть лучший способ приблизиться к этому.

...