【问题标题】:Setting up facebook authentication schema with existing user schema使用现有用户架构设置 facebook 身份验证架构
【发布时间】:2012-06-13 21:49:54
【问题描述】:

我想通过 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 身份验证的最佳方法是什么?

【问题讨论】:

  • 这取决于几个因素。您是否要允许用户使用 2 个不同的 Facebook 帐户登录到同一个帐户?您是否考虑将来添加其他身份验证方法?
  • 理想情况下,我希望他们能够使用一个电子邮件帐户登录并连接 facebook 帐户,以便我可以使用社交图扩展网站。
  • 你有没有让这个工作?
  • 没有。我不确定在 facebook 的 uid 旁边存储/重新生成 access_tokens 的正确方法是什么

标签: ruby-on-rails facebook authentication oauth


【解决方案1】:

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

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

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

无论这些实现选择如何,您都需要使用 omniauth gem 和 omniauth-facebook gem(您需要为每个提供者使用不同的 gem)。有关更多信息,请参阅项目的 wiki。它真的很容易使用。在您的情况下,要使其正常工作,您所要做的就是将这 2 个 gem 添加到您的 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 Key 和 API Secret,您需要创建一个 Facebook 应用来处理 oauth 连接。所以前往https://developers.facebook.com/apps 并创建它。然后不要忘记编辑这些设置:

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

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 2015-09-11
    • 2012-08-06
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 2011-05-11
    相关资源
    最近更新 更多