使用现有用户架构设置facebook身份验证架构

时间:2012-06-10 21:29:29

标签: ruby-on-rails facebook authentication oauth

我想通过OAuth将facebook集成到我的应用中,但我已经设置了现有的用户架构。这是我目前的架构:

# Table name: users
#
#  id              :integer         not null, primary key
#  first_name      :string(255)
#  last_name       :string(255)
#  email           :string(255)
#  created_at      :datetime        not null
#  updated_at      :datetime        not null
#  password_digest :string(255)
#  remember_token  :string(255)
#  admin           :boolean         default(FALSE)
#

使用rails添加facebook auth的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您还有几种不同的方法可以做到这一点。

  1. 使用人们登录Facebook的电子邮件在他们的Facebook帐户和您的网站帐户之间建立连接。

  2. 向用户数据库添加新列(称为uid,类型字符串)。使用oauth时,将返回有关用户的信息哈希值,包括该唯一标识符。 Here's an example.然后您可以存储此uid以便以后用作登录方式。

  3. 无论这些实现选择如何,您都希望使用omniauth gem和omniauth-facebook gem(您需要为每个提供商提供不同的gem)。有关详细信息,请参阅项目的wiki。它真的很容易使用。在你的情况下,为了让它工作,你所要做的就是将这2个宝石添加到你的Gemfile中:

    gem 'omniauth'
    gem 'omniauth-facebook'
    

    然后创建一个文件来设置您的策略。该约定将其命名为omniauth.rb:

    # config/initializers/omniauth.rb
    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET
    end
    

    要获得API密钥和API密钥,您需要创建一个Facebook应用程序来处理oauth连接。所以转到https://developers.facebook.com/apps并创建它。然后别忘了编辑这些设置:

    Settings>Basic>Website>Site URL:
      http://localhost:3000/ for development/testing
      your_website_callback_url for production