2012-06-10 63 views
0

我想通过OAuth的给Facebook融入我的应用程序,但我已经有一个现有的用户架构设置。这是我目前的架构:设置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) 
# 

什么是最好的方式来添加Facebook认证使用铁轨?

+0

这取决于几个因素。你想允许用户使用2个不同的Facebook帐户登录到同一个帐户吗?您是否想在未来添加其他身份验证方法? – Ashitaka

+0

理想情况下,我希望他们能够使用一个电子邮件帐户登录,并有facebook帐户连接,所以我可以使用社交图来扩展该网站。 – locoboy

+0

你有没有得到这个工作? – Ashitaka

回答

0

还有几个给你做这个不同的方式。

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

  2. 添加一个新列到你的用户数据库(称为UID,类型为字符串)。当您使用oauth时,会返回有关用户信息的散列,包括该唯一标识符。 Here's an example.然后,您可以将此uid存储为稍后用作登录的方式。不管这些实现选择

,你要使用omniauth宝石和宝石omniauth-facebook(你需要为每个供应商不同的宝石)。查看项目的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