2012-06-10 58 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