はじめに
SLACKのアクセストークンを取得する方法は2種類あります。
- GUIで取得
- http GETリクエストで取得
レガシートークン(非推奨)というモノも存在します。
パニックです。
http GETリクエストで取得の方法をまとめました。
ご参考になれば、うれしいです。
GUIで取得する方法
こちらの記事に書きました。
もしよろしければ。
※ GUIで取得の方が簡単です。
レガシートークンについて
レガシートークンは現在非推奨とされているため扱いません。
もともとはレガシートークンだけしか存在しなかったのですが、全ての権限をもつ(rootユーザーのような感じ)トークンはセキュリティ的に良くないよねということで現在の必要な権限のみ付与する仕組みに変わったようです。
非推奨ですが使うことはできます。(2019/03現在)
前提
SLACKのワークスペース(チーム)があること。
手順
【STEP1】 アプリを作成
アプリに対してアクセストークンが付与されるので、まずは作ります。
- https://api.slack.com/apps にアクセス
- Create an App
- お好きなアプリ名を入力
- アプリをインストールするワークスペースを選択
- Create an App
**■ 作成完了 ■** ![スクリーンショット 2019-03-29 18.06.09.png](https://qiita-image-store.s3.amazonaws.com/0/287998/8150b1be-e7df-f3bd-9759-6bb2917f0a5a.png)
**■ やり直したい時は ■** サイドメニューBasic Information ![スクリーンショット 2019-03-29 20.26.56.png](https://qiita-image-store.s3.amazonaws.com/0/287998/34586b6d-4abe-4218-e751-e66182c43d52.png)
↑↑↑↑↑ ここまでは[GUIで取得](https://qiita.com/_komiya/items/0e988239ed3f5145a22c)と共通の手順になります ↑↑↑↑↑
### 【STEP2】 リダイレクトURLを設定
サイドメニューOAuth & Permissions
Redirect URLs に http://example.com
と入力して保存して下さい。
### 【STEP3】 スコープを設定
https://slack.com/oauth/authorize
以下に
- クライアントID
- 必要なスコープ
を入力します。
https://slack.com/oauth/authorize?client_id=228897819378.596464632295&scope=channels:history,channels:read
↓↓↓ 上記パラメータには以下の値が入っています。
https://slack.com/oauth/authorize?client_id=クライアントID&scope=スコープ名
**■ クライアントIDの場所 ■**
サイドメニューBasic Information
※クライアントシークレットは後ほど使います。
**■ スコープの設定 ■** スコープはカンマ区切りで複数設定できます。 上記URLは、 ``` channels:history ``` と ``` channels:read ``` の2つのスコープを設定した例です。 下に [スコープ一覧↓](#スコープ一覧参考) 載せました。
**ブラウザのURL欄に入力しアクセスします。**
問題がなければ以下の画面に遷移します。 「許可する」ボタンを押します。 ![スクリーンショット 2019-03-29 21.02.13.png](https://qiita-image-store.s3.amazonaws.com/0/287998/2f25d7e0-0b8f-77c7-e9f9-43abd42b44ee.png)
先程設定をしたリダイレクトURLにとびます。
URLのパラメータ code=
の値が認証コードになります。
※ この認証コードを使いアクセストークンを取得します。
※ 認証コードの有効期限は10分間です。過ぎてしまったら、【STEP3】をやり直して下さい。
example.com/?code=ここの文字列が認証コード&state=
### 【STEP4】 アプリをインストール ``` https://slack.com/api/oauth.access ``` 以下に
- クライアントID
- クライアントシークレット
- 【STEP2】で取得した認証コード
を入力します。
※ クライアントシークレットは誰にも知られないようにして下さい。下記は削除済みです。
■ クライアントID, クライアントシークレットの場所 ■
https://slack.com/api/oauth.access?client_id=228897819378.596464632295&client_secret=316e3f212341f8a0450a1b9bf4a4f235&code=228897819378.592976375072.3c8f783291843f6ec69fb56e5827d5d7550c6d83c7de6ff43eb535520206f3d3
↓↓↓ 上記パラメータには以下の値が入っています。
https://slack.com/api/oauth.access?client_id=クライアントID&client_secret=クライアントシークレット&code=認証コード
**ブラウザのURL欄に入力しアクセスします。**
**■ 成功 ■** "ok" キーの値がtrueとなります。 ``` xoxp-228897819378-228958135940-596562921367-6dbfe14e5052cf72e0b7d26e3a819d14 ``` が目的のアクセストークンです。
{"ok":true,"access_token":"xoxp-228897819378-228958135940-596562921367-6dbfe14e5052cf72e0b7d26e3a819d14","scope":"identify,channels:history,channels:read,users:read","user_id":"・・・・・}
■ 失敗 ■
"ok" キーの値がfalseとなります。
{"ok":false,"error":"code_expired"}
**■ アクセストークンの場所 ■**
アプリのインストールに成功すれば、その後は以下よりアクセストークンの確認ができます。
### 【STEP4】 取得したトークンをテストする ブラウザのURL欄に ``` https://〜 ``` を入力してください。 ※curlコマンドでリクエストをなげてもOKです。
https://slack.com/api/channels.history?token=xoxp-228897819378-228958135940-590632179824-683ca3e9c7c4ae435bc2ac65443b3bec&channel=C6QSDQ4P4
↓↓↓ 上記パラメータには以下の値が入っています。
https://slack.com/api/付与したスコープで利用できるメソッド名?token=アクセストークン&channel=チーム内に存在するチャンネルのID
URLのパラメータに何をわたせばいいか、返却値として何が返ってくるのかなどはScopes and permissionsから調べられます。
ちなみにSLACK apiにわたすchennel=の値はチャンネル名ではなく、チャンネルIDである必要があります。
(上記例での channel=C6QSDQ4P4
の部分です。)
下に確認方法を記載しました。チャンネルIDの確認方法↓
### 【STEP5】 トークンテストの結果
■ 成功 ■
"ok" キーの値がtrueとなります。
{"ok":true,"messages":[{"user": ・ ・ ・ ・ ・ ・ ・}
■ 失敗 ■
"ok" キーの値がfalseとなります。
{"ok":false,"error":"channel_not_found"}
**アクセストークンの取得手順は以上となります。**
## チャンネルIDの確認方法(参考)
SLACK apiにわたすchennel=の値はチャンネル名ではなく、チャンネルIDである必要があります。
SLACK上でチャンネルを選択した状態でURL欄から確認できます。
## スコープ一覧(参考) [https://api.slack.com/docs/oauth-scopes](https://api.slack.com/docs/oauth-scopes)より
OAuth Scope | Associated Methods |
---|---|
channels:history |
|
channels:read |
|
channels:write |
|
chat:write:bot |
|
chat:write:user |
|
dnd:read |
|
dnd:write |
|
dnd:write:user |
|
emoji:read |
|
files:read |
|
files:write:user |
|
groups:history |
|
groups:read |
|
groups:write |
|
identity.basic |
|
identity.basic:user |
|
im:history |
|
im:read |
|
im:write |
|
links:write |
|
mpim:history |
|
mpim:read |
|
mpim:write |
|
pins:read |
|
pins:write |
|
reactions:read |
|
reactions:write |
|
reminders:read |
|
reminders:read:user |
|
reminders:write |
|
reminders:write:user |
|
search:read |
|
stars:read |
|
stars:write |
|
team:read |
|
tokens.basic |
|
usergroups:read |
|
usergroups:write |
|
users.profile:read |
|
users.profile:write |
|
users.profile:write:user |
|
users:read |
|
users:read.email |
|
users:write |
|