More than 1 year has passed since last update.

注意点

  • 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を指す
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.