From de806ad3bf254d35ca4f99b3a2e56231a933e065 Mon Sep 17 00:00:00 2001 From: Takym <15681312+Takym@users.noreply.github.com> Date: Fri, 9 Aug 2024 21:17:13 +0900 Subject: [PATCH] =?UTF-8?q?JsonUrlSaver=E3=80=81Slack=20API=20=E3=81=AE=20?= =?UTF-8?q?User=20OAuth=20Token=20=E3=82=92=E5=BC=95=E6=95=B0=E3=81=A8?= =?UTF-8?q?=E3=81=97=E3=81=A6=E5=8F=97=E3=81=91=E4=BB=98=E3=81=91=E3=82=8B?= =?UTF-8?q?=E6=A7=98=E3=81=AB=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JsonUrlSaver/DefaultDownloader.cs | 7 ++++++ JsonUrlSaver/README.md | 23 ++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/JsonUrlSaver/JsonUrlSaver/DefaultDownloader.cs b/JsonUrlSaver/JsonUrlSaver/DefaultDownloader.cs index 93e48ad..de2a418 100644 --- a/JsonUrlSaver/JsonUrlSaver/DefaultDownloader.cs +++ b/JsonUrlSaver/JsonUrlSaver/DefaultDownloader.cs @@ -23,6 +23,7 @@ internal sealed class DefaultDownloader : IDownloader private readonly IServiceProvider _services; private readonly IUrlFileNameConverter _ufn_conv; private readonly IUrlFilter? _url_filter; + private readonly string? _token; public DefaultDownloader(ILogger logger, IServiceProvider services, IConfiguration config, IUrlFileNameConverter ufnConv) { @@ -39,6 +40,8 @@ public DefaultDownloader(ILogger logger, IServiceProvider ser if (!string.IsNullOrEmpty(filters)) { _url_filter = services.GetUrlFilter(filters); } + + _token = config["token"]; } public void Download(string cacheDir, IUrlSource source) @@ -58,6 +61,10 @@ private async ValueTask DownloadAsync(string cacheDir, IUrlSource source) { using (var scope = _services.CreateScope()) using (var hc = scope.ServiceProvider.GetRequiredService()) { + if (_token is not null) { + hc.DefaultRequestHeaders.Add("Authorization", "Bearer " + _token); + } + foreach (var url in source) { if (_url_filter?.ShouldDownload(url) ?? true) { Stream src; diff --git a/JsonUrlSaver/README.md b/JsonUrlSaver/README.md index 0309fd8..18a8b52 100644 --- a/JsonUrlSaver/README.md +++ b/JsonUrlSaver/README.md @@ -41,13 +41,30 @@ ZIP > JsonUrlSaver.exe zip= dir= zipOverwrite=true ``` -### Slack 向けフィルタ +### Slack からデータをダウンロードする Slack からエクスポートして得られるアーカイブの JSON ファイルからファイルをダウンロードする時は、 -`filters=slack` を指定して Slack に保管したファイルのみを抽出する事もできます。 +`token=...` で User OAuth Token を指定する必要があります。 +また、`filters=slack` を指定し、ダウンロードする URL を絞り込みます。 ```cmd -> JsonUrlSaver.exe zip= filters=slack +> JsonUrlSaver.exe zip= token= filters=slack ``` +ワークスペースのセキュリティを保つ為には、User OAuth Token は使用後に直ちに破棄する様にしてください。 + +#### User OAuth Token の発行方法 +1. にアクセスします。 +2. 「Create New App」をクリックします。 +3. 「From scratch」を選択します。 +4. 必要事項を入力してアプリを作成します。 +5. 左のメニューの「OAuth & Permissions」をクリックします。 +6. 「Scopes」の「Bot Token Scopes」と「User Token Scopes」の両方に「files:read」を追加します。 +7. ページ上部の「OAuth Tokens for Your Workspace」セクションからワークスペースへインストールします。 +8. 使い終わったら、「Revoke Tokens」ボタンをクリックします。 + +#### 参考文献 +* [https://api.slack.com/web](Using the Slack Web API | Slack) +* [https://api.slack.com/concepts/token-types](Token types | Slack) + ### 表示 ダウンロードしたファイルは下記の手順で表示できます。 `mode=openOnly` を付ける場合、事前にダウンロードが必要になります。