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