Integration typeを「public integration」に設定してNotion API(OAuth)を試してみる
どうも!オペレーション部の西村祐二です。
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ということもあって制限や機能不足のところもありますが、今後に期待していきましょう。
誰かの参考になれば幸いです。