表題の通り。
このブログは、notion-blog を利用して、いくつか機能追加したりして運用しています。
Notion には 2021年1月現在、API は存在しません。
ただ、開発ロードマップ上にはあって、絶賛開発中というステートのようです。
※ そういえば、最近 private beta への登録フォームができているので、登録してみました。
そんなわけで、Notion からデータを取得するには、通信を解析してやるか、非公式の野良ライブラリを使うかという話になります。
冒頭の notion-blog も自前で Notion との通信部分を書いています(なお、ライブラリの作者が Vercel の中の人のようなので、処理内容については大きなアップデートがない限り大丈夫でしょう)。
いずれにせよ、Notion からプライベートなデータを取得する際には、ユーザの認証情報が必要になるわけですが、ここは、ブラウザに記録されている session token を使うことになります。
この token は有効期限がとても長く設定してあるので、同じ token を更新せずに使えます。
ただ、実装上、真っ当な挙動として、ユーザ自身が明示的にログアウトすると、その token は expire されます。
expire された token は再度ログインすると、新しいトークンが発行されます。
この場合、notion-blog に設定している token も無効になりますので、ブログ記事取得にも影響が出ます。
ただ、notion の仕様としては、別のセッションでログインしている token は、ユーザが明示的にログアウトしない限り expire しないようなので、普段ブラウザで使う token とは別の token を notion-blog 用に取得するのが良いように思います。
現状では、private mode でログインして取得するのが良いのではないでしょうか。
notion-blog で急にブログが表示されなくなったというようなことがあったら、まずは、token が生きているかを疑ってみると良いのではないかと思います。