#はじめに
Slack App(bot)でgranular permissions(細かな権限設定)が出来るようになりました。
アプリの管理画面にいくと、このように注意書きが表示されるようになっていました。
https://medium.com/slack-developer-blog/more-precision-less-restrictions-a3550006f9c3
https://api.slack.com/authentication/migration?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q401-granular-permissions
詳細は上記のBlogと公式ドキュメントに記載してありますが、簡単に要約すると以下のようです
- Slack Appでより細かな権限設定=granular permissionsを設定出来るようになった
- 2020/2/21以降、granular permissionsに対応していない新規アプリの提出は拒否される
- Slack App Directoryにある既存のアプリも2020年度の終わりまでに移行しなければならない
現在、Kiara TranslationというSlack上で動く自動翻訳アプリをリリース&Slack App Directoryに公開しているのですが、最近そのgranular permissionsに対応しました。
日本語ドキュメントも少なかったので、その方法を公開することで少しでもgranular permissionsにupdateする方の助けになれば幸いです。
対応方法
1. Slack Dashboard上で必要なスコープを選ぶ
自分のSlack AppのダッシュボードのOAuth & Permissions画面に行きます。
こちら「OAuth Scope」に「bot」と記載してあると思いますが、このScopeは以下の画像のように多くのScopeを含んでいます。
しかし、今回のupdateによって必要最低限のScopeを設定出来るようになるというわけです。
(この対応をすることでセキュリティが向上しますし、Slack Appを追加する時に表示されるAuthorize画面にて、必要最低限のScopeだけが表示されるので、ユーザーさんの安心感も異なってくるかと思います)
先ほどの画面で「update scopes」を選択して、必要最低限のスコープだけをここで選びましょう。
↓
今回は以下のようなScopeを選択しました。(後からでも変更可能です)
「Yes, migrate my app」を選択します。
↓
記載してあるように、authentication URLを変更する必要があるので、このURLはどこかに保存しておきます。
今回の場合は以下のURLになります(clinet_idはご自身のものに変更してください)
問題なければ「I've updated my app」を選択します。
↓
再び「OAuth & Permissions」画面に戻ります。
今回は「Bot Token Scopes」だけでなく「User Token Scopes」の説明もしたいので、「im:history」を新たに追加しました。
2. URLを変更する
次はURLを新しいものに変更していきます
authorize
→ v2/authorize
に変更
公式ドキュメント:https://api.slack.com/authentication/oauth-v2
今までhttps://slack.com/oauth/authorize
となっていたauthenticationのURLを
先ほどの手順でコピーした新たなURL(https://slack.com/oauth/v2/authorize
)に変更します。
(v2が追加される形ですね)
※注意点
先ほどコピーしたURLは
https://slack.com/oauth/v2/authorize?client_id=*****&scope=app_mentions:read,channels:read,chat:write,groups:read
だったと思うのですが、今回は手順の最後に「User Token Scopes」で、「im:history」を追加したと思います。
「User Token Scopes」はuser_scopeパラメータをURLに含める必要があるみたいなので、最終的に置き換えるURLは以下のようになることに注意してください。
https://slack.com/oauth/v2/authorize?client_id=*****&scope=app_mentions:read,channels:read,chat:write,groups:read&user_scope=im:history
oauth.access
→ oauth.v2.access
に変更
公式ドキュメント:https://api.slack.com/authentication/oauth-v2
URLhttps://slack.com/api/oauth.access
を
https://slack.com/api/oauth.v2.access
に変更します
こちらResponseもoauth.access
とoauth.v2.access
で異なるため、以下の資料を参考にしながらコードを変更して下さい。
oauth.access: https://api.slack.com/methods/oauth.access
oauth.v2.access: https://api.slack.com/methods/oauth.v2.access
3. 審査に出す
後はいつものように審査に出して承認されれば完了となります
※ユーザーさんに新たなScopeを適応もらうためには、アプリを再インストールする必要があります。
したがって、
- 旧Scopeでもslack appは動作する
- 新Scopeに対応し、再インストールしてもらう旨を何かしらの方法(direct messageなど)で通知する
なども必要に応じて確認出来れば良いと思います。
リンク集
-
https://medium.com/slack-developer-blog/more-precision-less-restrictions-a3550006f9c3
- Granular Permissionについて
-
https://api.slack.com/authentication/oauth-v2
- OAuthのフロー
-
https://api.slack.com/methods/oauth.access
-
oauth.access
methodのドキュメント
-
-
https://api.slack.com/methods/oauth.v2.access
-
oauth.v2.access
methodのドキュメント
-
- Quickstart: differences between old and new Slack apps