注意点
-
Authorization Code Flow
のみサポート- Authorization Flowの詳細は RFC6749 を参照
-
access_token
のexpiresは無制限- 現在のアクセストークンを無効にしたい場合は以下のいずれかの方法を取る
-
access_token
を再発行する - https://api.slack.com/tokens で該当するアプリケーション情報を削除する
-
- 現在のアクセストークンを無効にしたい場合は以下のいずれかの方法を取る
-
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_id
とclient_secret
が発行される- SlackのOAuthを利用するアプリケーションが、正規のアプリケーションであることを確認するためのパラメータ
- 漏洩しないように注意
OAuthの仕組みを用いてSlackへの認可を得る
以下の2ステップで認可を取得する
- 認可コードの取得
- アクセストークンの取得
詳細は、 Slackのドキュメント を参照。
認可コードの取得
-
https://slack.com/oauth/authorize にクエリパラメータを付与してリクエストを送信する
- client_id
- state
- team
- scope
- redirect_uri
- Slackの認可画面が表示されるので、team, ログインID, パスワードを入力して認可を得る。
- 2のレスポンスに含まれるState値を検証する。一致しない場合は処理を終了する
- 2のレスポンスに含まれるcode値を取り出し、以下の方法でリクエストを送信してアクセストークンを取得する
アクセストークンの取得
-
https://slack.com/api/oauth.access にクエリパラメータを付与してリクエストを送信する
- client_id
- client_secret
- code
- redirect_uri
- 4のレスポンスに含まれるScope値とteam値が意図したものであることを確認する
- 4のレスポンスに含まれるaccess_token値を取り出す
UserInfoの取得
-
https://slack.com/api/auth.test にアクセストークンを付与してリクエストを送信する
- token: ユーザ情報を取得したユーザに紐付いたアクセストークン
- テストページ(https://api.slack.com/methods/auth.test/test )で確認することもできる。
-
https://slack.com/api/users.info にクエリパラメータを付与してリクエストを送信する
- token: 取得したアクセストークン
- user: ユーザ名でもアカウントのIDでもなく、1で取得したuser_idを指す