Integration typeを「public integration」に設定してNotion API(OAuth)を試してみる

2021.07.20

どうも!オペレーション部の西村祐二です。

Notion APIについて検索すると、ほとんどIntegration typeを「Internal integration」に設定して試しているものばかりだったので、今回はIntegration typeを「public integration」に設定してNotion APIを試してみたいと思います。

public integrationとは

公式ドキュメントより引用

https://developers.notion.com/docs/authorization#authorizing-public-integrations

Public OAuth integrations receive an access token each time a user grants the integration access. This process follows OAuth 2.0 using an authorization code grant, described in a few simple steps below.

DeepLによる翻訳

パブリック OAuth インテグレーションは、ユーザーがインテグレーションにアクセスを許可するたびにアクセストークンを受け取ります。このプロセスは OAuth 2.0 の認証コード付与に従ったもので、以下にいくつかの簡単なステップで説明します。

要するにOAuth2.0のフローに沿ってアクセストークンを受けとり、そのトークンを使ってAPIを実行する流れになるようです。

試してみる

Postmanを使うと簡単にOAuth2.0のアクセストークンを取得することができるので、今回、Postmanを使って試していきます。

Integration typeを「public integration」に設定したIntegrationを作成

いつもの同じ流れでintegrationを作成していきます。

Integration typeを「public integration」に設定します。

設定項目が表示されるので埋めていきます。

Redirect URIsにhttps://oauth.pstmn.io/v1/browser-callback

Website or homepage、 Privacy policy、 Terms of use、 Support emailにURLやメールアドレスを入力していきます。ダミーの値でも一応保存できました。

設定項目を埋めたら「Submit」をクリックします。

設定が問題なければ、OAuth client ID、 OAuth client secretが表示されコピーできるようになるのでメモしておきます。

Postmanの設定

※Chrome版のPostmanを利用しています。

Postman側の設定をしていきます。

今回、Notion API oauthというコレクションを作成しています。

Variablesタブをクリックし、integration作成時にコピーした値を入れておきます。

Authorizationタブをクリックし、下記のように設定項目を埋めていきます。

  • Type: OAuth2.0

  • Token Name: 今回「test」としています。適宜変更してください。

  • Auth URL: https://api.notion.com/v1/oauth/authorize

  • Access Token URL: https://api.notion.com/v1/oauth/token

  • Client ID: integration作成時にコピーしたOAuth client ID

  • Client Secret: integration作成時にコピーしたOAuth client secret

  • Scope: ドキュメントみても特に記載がなかったので空にしています

  • State: 今回は動作確認が目的なので空にしています

設定ができたら「Get New Access Token」をクリックします。

すると下記ウインドウが表示されるので、アクセスを許可するページを選択する「Select pages」をクリックします。

今回、サンプルのデータベースであるMediaがあったので、これにチェックをつけて「Allow access」します。

するとPostman側の画面が下記のように「Authentication complete」になります。

「Use Token」をクリックすると取得したトークンを設定してくれます。

これでアクセストークン取得までできたので次は実際にAPIを実行してみます。

Notion APIを実行してみる

許可したデータベース「Media」の情報をAPIを使って取得してみます。

GET https://api.notion.com/v1/databases/<データベースID>

データベースIDはURLの「?v」の前にある文字列部分になります。

https://www.notion.so/{workspace_name}/{database_id}?v={view_id}

APIの詳細はAPIドキュメントを確認いただければと思います。

ヘッダーにNotion-Versionを設定する必要があるので忘れずに設定しましょう。

これで、API実行すると想定どおり、許可したデータベース「Media」の情報を取得することができました!

さいごに

Integration typeを「public integration」に設定してNotion APIを試してみました。

Notion APIを使ったアプリケーションを作成するときなど、OAuth2.0のフローに沿ってアクセストークンを受けとりたい場面があると思います。

そんなときのために流れを確認できたのは良かったです。

まだBetaということもあって制限や機能不足のところもありますが、今後に期待していきましょう。

誰かの参考になれば幸いです。