Slack API 推奨Tokenについて

# はじめに

以前[Slack APIのTokenの取得・場所](http://qiita.com/ykhirao/items/0d6b9f4a0cc626884dbb)という記事を書かせていただきました。
しかしながらこちらのトークンは以前は「Test Token」と表記されていたもので、今ではレガシーでかつ非推奨みたいですので、今回この記事を書かせていただきした。

推奨Tokenも5分くらいで作成できますので、こちらを使用することをおすすめします！
慣れたら作成は1分以内でできるようになります。
スコープの選定も基本は`chat:write:bot`とかSend messages系が一番多いと思うのであまり迷わないと思います。

## トークンの効力

| Tokenの種類 | 操作対象 |
|:-:|:-:|
| レガシー  | ほとんどの機能が使える1つのTokenを発行  |
| 今回  | 必要な機能ごとのTokenを発行  |

英語できる方はドキュメントからどうぞ [Using OAuth 2.0](https://api.slack.com/docs/oauth)

# Tokenについて

Token作成には以下の2種類があるかと思っています。

## 1. RedirectとResponseを利用した方法

パラメーターを付けたGETでアクセスして、返ってきたJSONにアクセスTokenがついてくるパターンの方法です。

* [今更ですが、iOS Slack API を叩いてみた。](http://qiita.com/ysomei/items/88e0bebfd2cfb21fade4)
* [SlackでOAuthを利用して BOT投稿 するための アクセストークン を取得する方法](http://www.utali.io/entry/2016/10/03/004421)

今回は扱わないので、よくまとまっている上の記事などを参照されると理解しやすくなると思います。

## 2. GUIで作成する方法

今回はこちらを私が書いていきますので、最後までよろしくお願いします。

# Tokenを作成する

アプリを作成してSlackにインストールすれば使えるようになりますので、その手順を書いていきます。

## 1. アプリ作成

まずはここにアクセスして、　https://api.slack.com/apps

**クリックする　/　入力する**
1. Create New App
2. App Name
3. Development Slack Team
4. Create App

![スクリーンショット 2017-06-14 11.01.04.png](https://qiita-image-store.s3.amazonaws.com/0/112929/46945cbd-3f12-97b7-4a83-6ea465e89f68.png)

## 2. スコープ設定

まずはスコープの設定をしないとアプリをインストールできません。
今回のサンプルではチャンネルにメッセージを投稿するだけのスコープだけ設定します。
どのスコープでどういうことができるかは今回取り扱いませんので、[ドキュメント](https://api.slack.com/docs/oauth-scopes)を参照ください。

* permission scopeをクリック

![スクリーンショット 2017-06-14 16.25.27.png](https://qiita-image-store.s3.amazonaws.com/0/112929/d598ba15-b9f3-faf2-995d-187ee89ab49c.png)

* 必要なscopeを選択 
* 今回はSend messages as sample.

![スクリーンショット 2017-06-14 16.28.57.png](https://qiita-image-store.s3.amazonaws.com/0/112929/74964c0f-54a4-d6ba-2d59-8d79d6116dcc.png)

## 3. Slackにアプリをインストール

ちゃんとScopeが設定されていると緑色になっている[Install App To Team]を押します。

![スクリーンショット 2017-06-14 16.31.12.png](https://qiita-image-store.s3.amazonaws.com/0/112929/439b9ce6-26c2-c0a6-1a82-9249bfe6379c.png)

Team名を確認して間違いがなければ[Authorize]を押します。

![スクリーンショット 2017-06-14 16.32.04.png](https://qiita-image-store.s3.amazonaws.com/0/112929/1f841428-c4e4-5a79-8b5b-5264a4ed0497.png)

リダイレクトされた先にTokenが書かれていますのでこれを普通のTokenとして使ってください。

## 4. Tokenを探す

先のTokenを紛失したときの探し方。
https://api.slack.com/apps

アプリを選ぶ。
sampleをクリック

![スクリーンショット 2017-06-14 16.35.27.png](https://qiita-image-store.s3.amazonaws.com/0/112929/48273650-326c-794f-5cc7-5122e7365333.png)

[OAuth & Permissions]をクリック
[OAuth Access Token]をコピー

![スクリーンショット 2017-06-14 16.36.20.png](https://qiita-image-store.s3.amazonaws.com/0/112929/67aa5083-cbf8-7fe8-f417-bc48e850ad34.png)

## 5. Tokenが使えるかの実験

httpを叩いてみる

sampleのTokenですがこんな感じです。

```html
https://slack.com/api/chat.postMessage?token=xoxo-xxx-xx-xx-xxxx&channel=bot-test&text=%22Hello%22
```
channelとTokenを変えると使えるはずです。

```
# 成功
{"ok":true,"channel":"xxxxx","ts":"xxxxx","message":{"text":"\"Hello\"","username":"sample","bot_id":"xxxxx","type":"message","subtype":"bot_message","ts":"xxxxx"}}
# 失敗
{"ok":false,"error":"token_revoked"}
```


# 残念な点

機能ごとにAppsが増えていく（Freeプランだと10個まで）
なのでレガシートークンの方の「Slack API Tester」だけ使いたくなりますね。

![スクリーンショット 2017-06-14 12.16.58.png](https://qiita-image-store.s3.amazonaws.com/0/112929/df6c5ea6-b0cc-d80a-ba0a-c09ad1a5260d.png)

管理場所は[Slackの外部Apps(Integrations)の場所・管理](http://qiita.com/ykhirao/items/d825a1a124ee78b73576)を参考ください。

https://your_team_name.slack.com/apps/manage です。

# 最後に
簡単なのでレガシートークンから置き換えて、新しいほうのトークンを是非使ってください。
間違いとかあったらコメント欄で優しく指摘くださるか、こっそりプルリクくれると喜びますm(__)m













.