9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails5 | omniauth でOauth認可をおこなう ( devise を使わない )

Last updated at Posted at 2017-05-05

ここではSlackを例にする。

App 側の設定をしておく

Oauth 連携用の設定をする (コールバック用のURLも追加する) を参考に Slack Apps の設定をおこなう。

  • ID / SECRETを取得する
  • コールバック用のURLを設定する

基本は二つの手順だけで良い。

コールバック用のURLとして、ここではhttp://localhost:3000/auth/slack/callback を指定しておく。

gem をインストールする

Gemfile
+ gem 'omniauth-slack'
bundle install

APIの種類ごとに omniauth-xxx シリーズが出ている。
(他にもTwitterやFacebookのomniauth用gemがある)

omniauthの設定

config/initializers/omniauth.rb を作成する。

ここではRails サーバー起動時に、OAuthの ID / SECRET を環境変数を渡す仕様にしておく。
最終的にIDとCLIENTが initializer に渡れば良いので、面倒ならばベタ書きでも良い。

config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
 provider :slack, ENV['CLIENT_ID'], ENV['CLIENT_SECRET'], scope: "client"
end

コールバック後の動作を作成する

Appでの認可完了後、Rails側でどのような動作をおこなうかを決める。
ここでは単純に、Appから得た情報を出力するだけにしておく。

bundle exec rails generate controller slack

app/controllers/slack_controller.rb
class SlackController < ApplicationController
  def callback
    p request.env['omniauth.auth'].info
    redirect_to '/'
  end
end
config/routes.rb
Rails.application.routes.draw do
  get 'auth/:provider/callback' => 'slack#callback'
end

Rails サーバーを起動する

App 側発行された Client ID と Client Secret を環境変数として指定する。

ちなみにここでは例として画像を貼ったが、通常は SECRET を外部に公開してはいけない。

CLIENT_ID=42945109268.178514494449 CLIENT_SECRET=bd5fc461f91accae86e91916356ee15c bundle exec rails server

認可を試す

localhost:3000/auth/slack にアクセスする。

うまくいけばSlackの認可画面が出る。

image

認可が済むと、コンソールにSlackユーザーの情報が表示される

これはさっきControllerで設定した動作のとおり。

image

ここでは単にコンソールに情報を表示するにとどめたが、必要ならばセッションに情報を収めてRailsアプリケーション側で使えるようにしたり、deviseと連携してDBに情報を保存したりすれば良い。

参考

環境

  • Rails 5.1.0
  • omniauth (1.6.1)
  • omniauth-slack (2.3.0)

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?