動かざることバグの如し

近づきたいよ 君の理想に

RailsでSlackのOAuth認証でログインしてみる

先人様のありがたいGemを使う

github.com

インストール

gem 'omniauth-slack'

アクセスキーとシークレットキーの入手

Twitterよりもちょっと面倒

まずここに行って適当にアプリケーションを登録する

  • AppName, Team, Description, Redirect URIが必須
  • RedirectURIは、トークン取得時のリクエストに含める値と同じにする
    • 開発環境ならhttp://localhost:3000/auth/slack/callback
  • 登録が完了後の client_idclient_secret を控えておく

config/initializers/omniauth.rbを新規作成

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :slack, "API_KEY", "API_SECRET", scope: "client"
end

あとは過去ポストのTwitterのようにするだけ なんと簡単

thr3a.hatenablog.com

ちなみにセッションに入る認証情報

{"name":"hogehoge","email":"hogehoge@hogehoge.net","nickname":"hogehoge","first_name":"hogehoge","last_name":"hogehoge","description":"すちゅーでんと","image_24":"https://avatars.slack-edge.com/2015-04-17/4506748099_c3612feb086796e55e31_24.jpg","image_48":"https://avatars.slack-edge.com/2015-04-17/4506748099_c3612feb086796e55e31_48.jpg","image":"https://avatars.slack-edge.com/2015-04-17/4506748099_c3612feb086796e55e31_192.jpg","team":"hogehoge","user":"hogehoge","team_id":"T04D23PJA","team_domain":"hogehoge","user_id":"U04ENNCN9","is_admin":false,"is_owner":false,"time_zone":"Asia/Tokyo"}