LoginSignup
55
43

More than 5 years have passed since last update.

SlackでOAuth2を利用したときのメモ

Last updated at Posted at 2015-10-18

注意点

  • Authorization Code Flow のみサポート
    • Authorization Flowの詳細は RFC6749 を参照
  • access_token のexpiresは無制限
    • 現在のアクセストークンを無効にしたい場合は以下のいずれかの方法を取る
  • refresh_token はサポートしていない
  • Scope は以下の値を取りうる。
    • デフォルトは、identify, read, post が指定される。
    • scopeは最小限に指定するのが望ましい
scope   権限
identify identityの確認権限。例えば、Auth Test APIで利用する。
read チャットやユーザ情報の読み取り権限。
post チャットやユーザ情報の書き込み権限。
client クライアントとしてSlackに接続する権限。readとpostの権限も持つ。
例えば、Real Time Messaging APIで利用する。
admin 管理者権限。もともと管理者であるユーザにのみ指定できる。
  • Team パラメータを指定すると認可の確認画面に表示される
    • 指定しない場合、ユーザが自身でteamを入力することになる

自身のアプリを登録する

  • https://api.slack.com/applications の 「Create a new applicaiton」を押下
  • 各種情報を入力して、「Create Application」ボタンを押下すると登録できる
    • AppName, Team, Description, Redirect URIが必須
    • RedirectURIは、トークン取得時のリクエストに含める値と同じにする
  • 登録が完了すると、client_idclient_secret が発行される
    • SlackのOAuthを利用するアプリケーションが、正規のアプリケーションであることを確認するためのパラメータ
    • 漏洩しないように注意

OAuthの仕組みを用いてSlackへの認可を得る

以下の2ステップで認可を取得する

  1. 認可コードの取得
  2. アクセストークンの取得

詳細は、 Slackのドキュメント を参照。

認可コードの取得

  1. https://slack.com/oauth/authorize にクエリパラメータを付与してリクエストを送信する
    • client_id
    • state
    • team
    • scope
    • redirect_uri
  2. Slackの認可画面が表示されるので、team, ログインID, パスワードを入力して認可を得る。
  3. 2のレスポンスに含まれるState値を検証する。一致しない場合は処理を終了する
  4. 2のレスポンスに含まれるcode値を取り出し、以下の方法でリクエストを送信してアクセストークンを取得する

アクセストークンの取得

  1. https://slack.com/api/oauth.access にクエリパラメータを付与してリクエストを送信する
    • client_id
    • client_secret
    • code
    • redirect_uri
  2. 4のレスポンスに含まれるScope値とteam値が意図したものであることを確認する
  3. 4のレスポンスに含まれるaccess_token値を取り出す

UserInfoの取得

  1. https://slack.com/api/auth.test にアクセストークンを付与してリクエストを送信する
  2. https://slack.com/api/users.info にクエリパラメータを付与してリクエストを送信する
    • token: 取得したアクセストークン
    • user: ユーザ名でもアカウントのIDでもなく、1で取得したuser_idを指す
55
43
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
55
43