繁体   English   中英

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

[英]Facebook Graph API with Rails and Authlogic - preferred methodology?

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

该区域似乎变化很大。 我很难用Rails 3来设置它,因为主要的Ruby facebook库都还没有为此正式更新,也没有最新的文档记录。

我使用Rails 3的方法是使用Facebooker2和Mogli。 我基本上采用了此处发布的mogli + authlogic oauth控制器代码,并将其与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

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

一位朋友为我们的应用程序开发了该gem,因此也许对您的应用程序也很有用: http : //github.com/pfracarolli/facebook-graph

使用Omniauth。 关于这个问题有一个讽刺。 我相信他甚至将它与Authlogic结合使用:

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

只需几行到您的SessionsController,以及config / initializers / omniauth.rb中一个配置文件中的几行,您或多或少就完成了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM