6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【画像で説明】SLACKの推奨アクセストークン(レガシートークンじゃない方)を取得する方法 - http GETリクエストで取得編 -

Last updated at Posted at 2019-04-01

はじめに

SLACKのアクセストークンを取得する方法は2種類あります。

  • GUIで取得
  • http GETリクエストで取得

レガシートークン(非推奨)というモノも存在します。
パニックです。
http GETリクエストで取得の方法をまとめました。
ご参考になれば、うれしいです。

GUIで取得する方法

こちらの記事に書きました。
もしよろしければ。
※ GUIで取得の方が簡単です。

レガシートークンについて

レガシートークンは現在非推奨とされているため扱いません。
もともとはレガシートークンだけしか存在しなかったのですが、全ての権限をもつ(rootユーザーのような感じ)トークンはセキュリティ的に良くないよねということで現在の必要な権限のみ付与する仕組みに変わったようです。
非推奨ですが使うことはできます。(2019/03現在)

前提

SLACKのワークスペース(チーム)があること。

手順

【STEP1】 アプリを作成

アプリに対してアクセストークンが付与されるので、まずは作ります。

  1. https://api.slack.com/apps にアクセス
  2. Create an App
  3. お好きなアプリ名を入力
  4. アプリをインストールするワークスペースを選択
  5. Create an App

スクリーンショット 2019-03-29 16.51.42.png
スクリーンショット 2019-03-29 17.12.02.png


**■ 作成完了 ■** ![スクリーンショット 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)

最下部のDelete Appボタンでアプリを削除
スクリーンショット 2019-03-29 18.13.44.png


↑↑↑↑↑ ここまでは[GUIで取得](https://qiita.com/_komiya/items/0e988239ed3f5145a22c)と共通の手順になります ↑↑↑↑↑
### 【STEP2】 リダイレクトURLを設定

サイドメニューOAuth & Permissions
Redirect URLs に http://example.com と入力して保存して下さい。
スクリーンショット 2019-04-01 20.33.36.png


### 【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
※クライアントシークレットは後ほど使います。
スクリーンショット 2019-03-29 20.26.56.png

スクリーンショット 2019-04-01 21.48.27.png
**■ スコープの設定 ■** スコープはカンマ区切りで複数設定できます。 上記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】をやり直して下さい。

スクリーンショット 2019-04-01 21.45.05.png
example.com/?code=ここの文字列が認証コード&state=

### 【STEP4】 アプリをインストール ``` https://slack.com/api/oauth.access ``` 以下に
  • クライアントID
  • クライアントシークレット
  • 【STEP2】で取得した認証コード

を入力します。
※ クライアントシークレットは誰にも知られないようにして下さい。下記は削除済みです。

■ クライアントID, クライアントシークレットの場所 ■

サイドメニューBasic Information
スクリーンショット 2019-03-29 20.26.56.png

スクリーンショット 2019-04-01 21.48.27.png
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"}

**■ アクセストークンの場所 ■**

アプリのインストールに成功すれば、その後は以下よりアクセストークンの確認ができます。

サイドメニューOAuth & Permissions
スクリーンショット 2019-03-29 21.36.48.png


### 【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欄から確認できます。
スクリーンショット 2019-03-31 14.09.12.png


## スコープ一覧(参考) [https://api.slack.com/docs/oauth-scopes](https://api.slack.com/docs/oauth-scopes)より
OAuth Scope Associated Methods
channels:history
  • channels.history
  • channels.replies
channels:read
  • channels.info
  • channels.list
channels:write
  • channels.archive
  • channels.create
  • channels.invite
  • channels.join
  • channels.kick
  • channels.leave
  • channels.mark
  • channels.rename
  • channels.setPurpose
  • channels.setTopic
  • channels.unarchive
  • conversations.join
chat:write:bot
  • chat.delete
  • chat.deleteScheduledMessage
  • chat.postEphemeral
  • chat.postMessage
  • chat.scheduleMessage
  • chat.update
chat:write:user
  • chat.delete
  • chat.deleteScheduledMessage
  • chat.meMessage
  • chat.postEphemeral
  • chat.postMessage
  • chat.scheduleMessage
  • chat.update
dnd:read
  • dnd.info
  • dnd.teamInfo
dnd:write
  • dnd.endDnd
  • dnd.endSnooze
  • dnd.setSnooze
dnd:write:user
  • dnd.endDnd
  • dnd.endSnooze
  • dnd.setSnooze
emoji:read
  • emoji.list
files:read
  • files.info
  • files.list
files:write:user
  • files.comments.delete
  • files.delete
  • files.revokePublicURL
  • files.sharedPublicURL
  • files.upload
groups:history
  • groups.history
  • groups.replies
groups:read
  • groups.info
  • groups.list
groups:write
  • groups.archive
  • groups.create
  • groups.createChild
  • groups.invite
  • groups.kick
  • groups.leave
  • groups.mark
  • groups.open
  • groups.rename
  • groups.setPurpose
  • groups.setTopic
  • groups.unarchive
identity.basic
  • users.identity
identity.basic:user
  • users.identity
im:history
  • im.history
  • im.replies
im:read
  • im.list
im:write
  • im.close
  • im.mark
  • im.open
links:write
  • chat.unfurl
mpim:history
  • mpim.history
  • mpim.replies
mpim:read
  • mpim.list
mpim:write
  • mpim.close
  • mpim.mark
  • mpim.open
pins:read
  • pins.list
pins:write
  • pins.add
  • pins.remove
reactions:read
  • reactions.get
  • reactions.list
reactions:write
  • reactions.add
  • reactions.remove
reminders:read
  • reminders.info
  • reminders.list
reminders:read:user
  • reminders.info
  • reminders.list
reminders:write
  • reminders.add
  • reminders.complete
  • reminders.delete
reminders:write:user
  • reminders.add
  • reminders.complete
  • reminders.delete
search:read
  • search.all
  • search.files
  • search.messages
stars:read
  • stars.list
stars:write
  • stars.add
  • stars.remove
team:read
  • team.info
tokens.basic
  • migration.exchange
usergroups:read
  • usergroups.list
  • usergroups.users.list
usergroups:write
  • usergroups.create
  • usergroups.disable
  • usergroups.enable
  • usergroups.update
  • usergroups.users.update
users.profile:read
  • team.profile.get
  • users.profile.get
users.profile:write
  • users.deletePhoto
  • users.profile.set
  • users.setPhoto
users.profile:write:user
  • users.profile.set
users:read
  • bots.info
  • users.getPresence
  • users.info
  • users.list
users:read.email
  • users.lookupByEmail
users:write
  • users.setActive
  • users.setPresence
6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?