LoginSignup
6
5

More than 3 years have passed since last update.

Slackアプリのインストール種別

Last updated at Posted at 2020-07-28

Slack botなどのアプリの開発をする上で、開発したアプリをインストールする方法は4種類ほどある。
最初よくわからず手戻りが発生して面倒だったのでまとめた。

こちらのURLからアプリを管理できる。
https://api.slack.com/apps/

インストール種別

所属ワークスペースへのインストール(直接)

  • インストール先
    アプリには所属するワークスペースというものがあり、アプリ作成時の初期設定で決まる。
    今のところ、あとから変更できないので慎重に決める。
    この方法では所属ワークスペースにしかインストールできない。

  • インストール方法
    インストール作業自体は一番簡単で、アプリ管理画面で Install App ボタンを押すだけでインストールできる。

  • botトークン
    botトークンはアプリ管理画面から取得できる。

所属ワークスペースへのインストール(OAuthフロー)

  • インストール先
    この方法でも所属ワークスペースにしかインストールできない。
    他のワークスペースにインストールしようとすると invalid_team_for_non_distributed_app エラーがでてインストールに失敗する。

  • インストール方法
    OAuthフローは普通のSlackアプリをインストールする時のフローなので見たことがあるはず。
    このアプリはこういう権限を要求してるがインストールしてよいか?とインストール承認画面で聞いてくるやつ。
    違いはワークスペースの選択ができないこと。
    事前にアプリ管理画面でRedirectURLを設定する必要がある。RedirectURLについては後述。

  • botトークン
    認可後にRedirectURLに認可コード付きで戻ってくるので、それを使ってbotトークンを取得できる。
    OAuthフローでのインストール課程でbotトークンが手に入るので、トークンをDBに保存しておく必要がある。
    自作のbotでは、チームIDとenvをキーにインストール情報を丸ごとDynamoDBに保存した。

他のワークスペースへのインストール

  • インストール先
    どのワークスペースでもインストールできるようにするには、アプリを公開する必要がある。公開することと、Slack App Directoryに登録することは別。
    公開自体はアプリ管理画面で Activate Public Distribution ボタンを押すだけで完了する。
    公開するとインストール承認画面の右上からワークスペースを選択できるようになる。逆にインストールURLが分かれば誰でもインストールできるようになる。

  • インストール方法
    所属ワークスペースへのインストールと同じ。

  • botトークン
    所属ワークスペースへのインストールと同じ。

Slack App Directoryへの登録

  • インストール先
    他のワークスペースへのインストールと同じ。

  • インストール方法
    公開した上で更にチェックリストをクリアするとSlack App Directoryに登録できる。
    Slack App Directoryに登録すると https://slack.com/apps からインストールできるようになる。

  • botトークン
    所属ワークスペースへのインストールと同じ。

追加開発や必要な設定

OAuth認可コード発行後のリダイレクトURLの設定

bot側でOAuthフローを実装した上で OAuth & Permissions から Redirect URLs の設定を行う。
@slack/bolt@slack/oauth のデフォルト設定では /slack/oauth_redirect のパスに対応しているので、そのまま設定すればよい。
設定値は https://bot.example.com/slack/oauth_redirect のようになる。

アンインストール/トークン無効化時の対応

アンインストールやトークンの無効化をされた時にインストール情報をDBから削除するため tokens_revoked イベントを受け取るようbot設定を変更する必要がある。
app_uninstalled イベントも用意されているが、アンインストール時には tokens_revoked イベントも発火するのでトークンの削除が目的であれば tokens_revoked イベントを設定すればよいと思う。
設定はアプリ管理画面の Event Subscriptions から行う。

トークン管理処理

所属ワークスペースへのインストール(直接)の場合、アプリ管理画面からbotトークンを取得できる。
ただコピーしてくるだけなので、bot起動時にトークンをアプリに直接渡すことになる(環境変数など)。
他ワークスペースにインストールできるようにする場合には追加開発が必要になる。

6
5
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
5