Help us understand the problem. What is going on with this article?

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

More than 3 years have 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を指す
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした