目的
slackのAPIをC#から実行し、結果を受け取る
必要なもの
slack APIの実行に必要なtoken
slack上でアプリを新規作成し、OAuth Access Tokenを入手する。このとき、OAuth&PermissionsのUser Token Scopesに「files:read」をつけると、今回実行するfiles.listが実行できるようになる。
slack APIの調査(slack API Tester)
https://api.slack.com/methods/files.list/test
のようなテストページが用意されているので、こちらを使って試すことができる。
tokenは、「No token」を指定して上記のOAuth Access Tokenを指定する。
ページ下部の「Test Method」をクリックすると実行され、結果が表示される。
実行したURLも表示されるので、このURLを使う。
NuGetにてNewtonsoft.Jsonをインストールする
APIの戻り値がJSON形式で返ってくるため、各値を取得しやすいようにする。
ソースコード(WindowForms)
private const string TOKEN = "xxx-xxx-xxx-xxx-xxx";
/// <summary>
/// ボタンクリックイベント
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param> private async void button1_Click(object sender, EventArgs e) {
//URL貼り付け var result = await GetData($"https://slack.com/api/files.list?token={TOKEN}&count=100&pretty=1");
//JObject型にキャストする var jsonValue = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(result);
//ok、files、pagingの3つの要素が返ってくるので、ここではfilesを取得 var files = jsonValue["files"]; foreach (var file in files) {
//各値を取得 Console.WriteLine(file["id"]); Console.WriteLine(file["name"]); } }
/// <summary>
/// 渡されたURLへアクセスし、返ってきた値を返す
/// </summary>
/// <param name="url"></param>
/// <returns></returns> private async Task GetData(string url) { using (var client = new HttpClient()) { var res = await client.GetAsync(url); return await res.Content.ReadAsStringAsync(); } }