Facebook(oauth)登入的最佳作法

(本文根據 Xdite 所分享的 Best Practice 整理而成,原文)

前置 Gemfile

gem "devise"  
gem "omniauth"  
gem "omniauth-facebook"  
gem "oauth2"  

Devise

安裝

rails g devise:install 
rails g devise MODEL 

產生 Authorization Model (提供多重認證用, 如果只有提供單一認證可以不產生...)

rails g model Authorization provider:string user_id:integer uid:string 

omniauth

在 User Model 的devise區塊裡加入 :omniauthable

然後 extend OmniauthCallbacks

新增 models/user/omniauth_callbacks.rb

這個是從callbacks把資料塞進去的主要關鍵,範例如下

設定 routes

devise_for :users, :controllers => {
  :omniauth_callbacks => "users/omniauth_callbacks"
} do
  get "logout" => "devise/sessions#destroy"
end

補上 controller (我就是忘記補上 controller 於是卡關卡很久)

設定 Facebook 的 token

在 config/initializers/devise.rb 裡找到空位,塞入

config.omniauth :facebook, APP_ID, APP_SECRET

登入 Link 的寫法

link_to("Fb login", user_omniauth_authorize_path(:facebook) )

只要對應的欄位在 User model 沒漏掉,這樣就完成 Facebook 登入了,可喜可賀

Comments

comments powered by Disqus