SlackBotがインストール出来なくなった!?原因と対応方法を解説!

プログラミング
この記事は約6分で読めます。
スポンサーリンク

2020年1月、SlackBotのボットユーザーの仕様が変わりました

これまでBotUserとして使われていたものが、AppHomeというものになりました。

AppHomeに変わって、既存のSlackbotに影響が出ているものがあります。

今回は突然SlackBotの管理者ページのUIが変わってしまってインストール出来なくなってしまった経験を活かして、本記事では

・SlackBotをインストール出来なくなった原因と対応策
・SlackBotの権限(スコープ)が細分化されたことによる影響

を解説したいと思います!

インストールするボットユーザーがありません

このエラーで来た人が多数なのではないでしょうか?

こちらの原因は画像に書いてあるとおり、ボットを使用するための設定が足りていないためです。

・ボットトークンを使用する設定になっている
・AppHomeでSlackBotの名前の登録をしていない

こちらの2つの条件が重なった時に上記エラーが発生します。

具体的な対応方法を以下の章で説明していきます。

スコープを確認する

まずはスコープを確認しましょう。

「Scopes to Add」を選択すると「OAuth & Permission」のタブの画面に遷移します。

そこで以下の画像のScopesに注目しましょう。

これまでトークンはこのようにボットトークンとユーザートークンの2つに分かれておらず、「ユーザートークン用のスコープ」と「Botという1つのスコープ」に分かれていました。

これまであまりトークンの違いを意識していなかった人は、ここでどちらにスコープを付けるか迷います。私です\(^o^)/

ボットトークン(Bot Token)

Slackbotとして使いたい場合はこちらのスコープを使用してください。

ボットトークンを設定する場合、Slackbotの名前の登録が必ず必要です。

ユーザートークン(User Token)

作成したユーザーとしてAPIを使用したい場合などはこちらを使用します。

Slackにはレガシートークンという使用非推奨の最強のトークンがあります。

https://api.slack.com/custom-integrations/legacy-tokens

こちらはセキュリティ的に強すぎて危険なため、代理としてユーザートークンを使用します。

今回はボットを使いたいのでボットトークンを使用します。

App Home の名前を登録する

ボットトークンを使用している状態だと、先程のApp Homeの画面でアプリの名前を入力できるようになっています。

これがこれまでのBotUserページに当たる部分となります。

ここでApp Display Nameを登録することでアプリをインストールできる条件が揃います

SlackBotをインストール

「Install App」からアプリをインストールします。

インストールが完了すると、Bot User OAuth Access Tokenのみ表示されている状態になっていれば成功です。

スコープを設定する際に、ユーザートークンを登録した場合は、ユーザートークンとボットトークンの2種類が表示されているはずです。

権限が細分化された影響

Slack has improved how we handle permissions for apps, so you can now request only the specific scopes your app needs. We recommend updating your app’s scopes. Beginning February 21, all new app submissions to the App Directory must use granular permissions. Read our blog post.

日本語訳

権限が細分化された影響は以下のSlackブログで紹介されています

https://medium.com/slack-developer-blog/more-precision-less-restrictions-a3550006f9c3

スコープを削減することで安全になる

これまで「Bot」という1つのスコープで何でも出来ていたので、必要以上の権限が与えられている状態になっているBotもあったのではないでしょうか?

Botのトークンを細分化したことで本当に必要な権限だけをもたせることが出来ます。

そのため、万が一トークンが漏れてしまっても投稿だけの機能しかないBotであれば秘密の情報まで盗まれることもなくなります。

これまで出来なかったことが出来るようになる

これまではSlackBotでは「Bot」というスコープで管理されている権限しか使えませんでした。

しかし、ユーザートークンだけで提供されているスコープもありました。

今回スコープが細分化されたことによって、これまでユーザートークンでしか出来なかったことがボットでも出来るようになります!

chat.postMessageに大きな変化が…!😱

Slackbotの権限が細分化される話とはズレるのですが、chat.postMessageが変わります。

具体的には、

・as_user = true での投稿の廃止
・SlackBotの名前を上書きしての投稿

が挙げられます(もっとあるかも)

https://api.slack.com/authentication/quickstart#calling

理由としては、権限が細分化されたことで、開発者アカウントとの関連がなくなり、SlackBotが独自の権限を持つ1つのBotになるため、as_userの概念が不要になるためです。

これまで

  • Bot Token + as_user = false → アプリ(Slackbotのチャンネルに投稿されるやつ)
  • Bot Token + as_user = true → Botユーザー
  • User Token + as_user = false → アプリ(Slackbotのチャンネルに投稿されるやつ)
  • User Token + as_user = true → 開発者

だったのが、

  • Bot Token → Botユーザー
  • User Token → 開発者

という感じになるようです。

今一度確認したほうが良いですね…!

仕様変更がやばい

今回はSlackbotがインストール出来ない問題から始まり、大きな仕様変更に関して触れました。

まとめますと、インストール出来ない場合は、

✅ どのトークンを使おうとしているかチェック
✅ Botトークンを使おうとしている場合はAppHomeの設定を忘れない

をチェックしてください。

また、Slackbotの仕様変更が大きいため、今使っているSlackbotも確認したほうが良いですね。

いやぁ…大変になるぞぉぉおおお😱😱😱

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました