🐈

Slack API でメッセージやチャンネル一覧が取得できない時。

2021/10/28に公開

Slack API でinvalid_authが返ってくる場合について書いています。

1. まずTokenがきちんと使えるのか確認。

ここから確認できます。
https://api.slack.com/methods/auth.test/test

こんな感じになっていたらOK.
{
    "ok": true,
    "url": "https://subarachnoid.slack.com/",
    "team": "自分のワークスペース名",
    "user": "bot",
    "team_id": "T0G9PQBBK",
    "user_id": "W23456789",
    "bot_id": "BZYBOTHED"
}

2. 任意のメソッドが通るかテストする(トークンのスコープミスなどを確認できる)

例えば、チャンネルを取得するためにconversations.listを使う場合、取得したTokenで本当に動くかを確認します。

ここでテストできます↓
https://api.slack.com/methods/conversations.list/test

※動かなければ、おそらく必要なスコープが設定されていないので、公式apiを見ながら必要なスコープを追加します。
https://api.slack.com/methods

必要なスコープは、conversations.listであればRequired scopes部分で確認できます。

3.TOKENの渡し方を確認する。

参考:公式Argumentsより、

Token:

Authentication token bearing required scopes. Tokens should be passed as an >HTTP Authorization header or alternatively, as a POST parameter.

とあるので、TOKENはhttpヘッダーとして渡してあげる必要があります。
つまり、

url = "https://slack.com/api/メソッド名?token=TOKEN"

のような形では動かず、

url = "https://slack.com/api/メソッド名" //基本のURL
const options = {
	"headers": { 'Authorization': 'Bearer ' + TOKEN }
};

let response = UrlFetchApp.fetch(url,options);

のようにheaderとして、別でTOKENを指定しurlと一緒に渡す必要があります。

4.その他

・urlにスペースが入ってしまっている。
・スペルミス
などがあるかもしれません。

Discussion