Ruby on rails 使用现有用户模式设置facebook身份验证模式

Ruby on rails 使用现有用户模式设置facebook身份验证模式,ruby-on-rails,facebook,authentication,oauth,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

我想通过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添加FacebookAuth的最佳方法是什么?

仍然有几种不同的方法供您使用

  • 使用人们登录facebook时使用的电子邮件在他们的facebook帐户和您的站点帐户之间建立连接

  • 向用户数据库中添加一个新列(称为uid,键入string)。使用oauth时,将返回有关用户的信息的散列,包括该唯一标识符。然后,您可以存储此uid以供以后作为登录方式使用

  • 不管这些实现选择如何,您都希望使用gem和gem(您需要为每个提供者使用不同的gem)。有关更多信息,请参见项目的wiki。它真的很容易使用。在您的情况下,要使其正常工作,您只需将以下两个宝石添加到您的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连接。因此,继续前进,创造它。然后不要忘记编辑这些设置:

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

    这取决于几个因素。是否允许用户使用两个不同的facebook帐户登录到同一帐户?您是否考虑在将来添加其他身份验证方法?理想情况下,我希望他们能够使用一个电子邮件帐户登录,并连接facebook帐户,以便我可以使用社交图扩展网站。您是否曾经使用过此方法?否。我不确定存储/重新生成访问令牌的正确方法是什么来自facebook的uid