Dropbox Webhook API を使う

Dropbox 内でファイルの変更があったら Slack に通知するようなものを作ろうと思って Dropbox Webhook API を使ってみた。

create app

まずは App Console でアプリを作成する。

Permission type'Full Dropbox' にする。 'App folder' はそれぞれのアプリ専用のフォルダが作成され、その中で read/write できるっていうやつ、使ってないので多分だけど。

あとは Webhooks の項目にある Webhooks URLs に自分のアプリの URL を入れれば、検証用のリクエストが飛んでくる。ただまだコード書いてないのでその検証は通らないのでまだこの項目は入れなくて良い。

write code

書くべきものはざっくり2つ。

  • 上述の検証用に、送られて来た challenge という query string をそのまま返すやつ。( GET )
  • 実際にやりたいことを書くやつ。( POST )

minimum sample code

Express でのサンプルコード。

const express = require("express");
const app = express();

app.get("/webhook", (req, res) => {
  res.send(req.query.challenge);
});

app.post("/webhook", (req, res) => {
  // ここにやりたいことを書く
  res.send("");
});

app.listen(3000, () => console.log("Example app listening on port 3333"));

※ サーバーの環境などを作るのが面倒臭かったので、実際に Webhook URLs に登録しての動作確認をしたわけでない。

app.get("/webhook", (req, res) => {
  res.send(req.query.challenge);
});

この部分で検証が通るようになるので、 Webhook URLs として登録すれば、以降 Dropbox 内でファイルの変更があるたびに、 POST でデータが飛んでくるようになる。

あとは POST のところでやりたいことをガリガリ書いていこう。

もう少し触ってみて、もっとわかってきたら改めて詳しく書くかもしれない。 Let’s enjoy :)