iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
Software Development

Rails 開發,每日一套件介紹! 系列 第 20

Day 20: 探索無縫身份驗證新世界 - Omniauth

  • 分享至 

  • xImage
  •  

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
今天是每日一套件的第 20 天,繼續跟著我一起認識 Rails 開發好用的 30 個套件,建立出自己的常用套件庫吧!

Day 20: Omniauth

第 20 天啦!今天來講一個非常實用的套件,因為 Devise 的關係,也間接認識它。但我先前一直錯誤的理解他是第三方登入的套件,雖然也不算錯啦!

但嚴格說起來,應該是一個授權驗證庫比較正確,而它整合第三方身份驗證和授權登錄的過程。讓使用者可以採用他們的社群媒體帳號來登入,如 Facebook、Twitter、Google 等其他身份驗證提供者 (provider)(如OAuth、OpenID)進行授權,Omniauth 都為這些提供了簡易的解決方案。

Omniauth 的原理是通過提供一個統一的接口,讓你可以輕鬆地整合不同的第三方身份驗證服務,不需要每一個 provider 都從頭開始身份驗證。Omniauth 會處理驗證流程,然後將驗證資料回傳給你的應用程式。

安裝方式:

首先要先安裝 omniauth,除了這個之外,還要安裝一個 想要整合的第三方驗證,如下:
(另外,Devise 也有內建,詳見 Day 18)

gem 'omniauth'
gem 'omniauth-<provider>'

這裡的 是你想要整合的第三方身份驗證提供者,比方說 "omniauth-facebook"、"omniauth-twitter"、"omniauth-google-oauth2" 等等。

記得 bundle install~

接著你需要設定 Omniauth,通常在 config/initializers/omniauth.rb 裡。
如下範例:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :<provider>, '<api_key>', '<api_secret>'
end

一樣的, 是你想要整合的第三方提供者,<api_key> 和 <api_secret> 是你該提供者獲得的金鑰和密碼。

完成設定後,你就可以在 controller 中使用 Omniauth 來處理身份驗證了。
以下是一個簡單的例子,假設你想使用 Facebook 登錄:

class SessionsController < ApplicationController
  def create
    auth = request.env['omniauth.auth']
    # 可以在這裡處理授權成功後的邏輯
  end

  def failure
    # 可以在這裡處理授權失敗後的邏輯
  end
end

request.env['omniauth.auth'] .env 有沒有很面熟,請詳閱 Day 6

大概就這樣囉,我們明天見!
有問題歡迎隨時留言~


上一篇
Day 19 : 座標地圖智慧王 - Geocoder
下一篇
Day 21: 除錯小獵手 - Pry
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言