带有Rails和Authlogic的Facebook Graph API - 首选方法?

时间:2010-06-17 22:09:26

标签: ruby-on-rails facebook authlogic ruby-on-rails-3

有许多Facebook + Rails解决方案,最着名的是Facebooker,但是这个和许多其他解决方案与Rails 3不兼容。我目前正在使用Authlogic对我的应用进行身份验证,我希望为用户提供Facebook选项登录。我想找到让FB和Authlogic走到一起的最佳方式;现在我只是为Facebook编写自己的Authlogic插件,但如果已经完成,那么我不想重做其他人的工作。有谁知道这样的事情?

3 个答案:

答案 0 :(得分:0)

这个领域似乎有很大的变化。我很难用Rails 3设置它,因为没有一个主要的Ruby facebook库正式更新它,而且最新版本没有记录。

我使用Rails 3的方式是使用Facebooker2和Mogli。我基本上采用了mogli + authlogic oauth控制器代码posted here并将其与Facebooker2的控制器和辅助方法相结合。 Facebooker2和Mogli没有文档(我知道),但Facebooker2代码相对简单。

我还必须手动处理一些authlogic验证,以便只触发非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

可能存在一些错误,我怀疑有更好的方法可以解决这个问题。

答案 1 :(得分:0)

朋友为我们的应用程序开发了这个gem,所以也许它对你的应用程序很有用:http://github.com/pfracarolli/facebook-graph

答案 2 :(得分:0)

使用Omniauth。关于这个主题有一个轨道广播。我相信他甚至将它与Authlogic结合使用:

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

您的SessionsController只需几行,config / initializers / omniauth.rb中的配置文件中有几行,您或多或少都会完成。