カテゴリー内の他の記事

複数 API トークンを使ってできること

フォローする

2019年12月の定期メンテナンス以降に利用可能です

Index

はじめに

2019年12月の定期メンテナンスで、複数のAPI トークンを使って、kintone REST API による複数アプリにまたがるレコードの取得・作成・更新ができるようになります。

今まではパスワード認証でしか実行できなかった REST API を、API トークン認証でも実行できるようになりました。
その一例として、ルックアップや関連レコードが設定されたアプリの操作を、複数 API トークンをつかって行う方法を紹介します。

複数APIトークンのリクエスト

複数 API トークンを使った認証

API トークンによる認証では、リクエストヘッダの「X-Cybozu-API-Token」に生成したAPIトークンを指定します。
1つのリクエストで複数の API トークンを利用するには、2つの方法があります。

  1. API トークンをカンマ区切りで指定する方法
    HTTP リクエストのヘッダーに、API トークンをカンマ区切りで指定します。
    例:指定するAPI トークンが「XXXXXXXXXX」「YYYYYYYYYY」の場合
  2. API トークンを別々のヘッダーに分ける方法
    curl では、API トークンの指定を別々の -H オプションに分けて指定できます。
    例:指定するAPI トークンが「XXXXXXXXXX」「YYYYYYYYYY」の場合

複数の API トークンを利用したリクエスト例

今回は curl コマンドを使って、次の2パターンの操作を行います。
curl コマンドで kintone REST API を実行する方法はこちらの記事で解説しています。
※ macOS Mojave 10.14.6 / curl 7.54.0 で動作確認しています。

  • ルックアップの操作
    顧客管理アプリからのルックアップで値をコピーして、案件管理にレコードを登録する
  • 関連レコードの操作
    関連レコードに表示した活動履歴を検索条件にして、案件管理アプリのレコードを検索する

アプリの準備

アプリの追加

アプリストアから「営業支援パック」を追加します(参考:アプリストアからアプリを追加する)。
このとき、「サンプルデータを含める」にチェックを入れた状態で追加してください。

kintone に「顧客管理」「案件管理」「活動履歴」の3つのアプリが作成されます。

※ 追加した各アプリのアプリIDをメモしておいてください。
アプリID は、アプリを開いたときの URL の https://SUBDOMAIN.cybozu.com/k/この部分/ です。

 API トークンの生成

API トークンを生成します(参考:API トークンを生成する)。

各アプリで発行する API トークンのアクセス権は、次のように設定します。

アプリ アクセス権 説明
案件管理 レコード閲覧、レコード追加 ルックアップの操作、および関連レコードの操作で利用します。
顧客管理 レコード閲覧  ルックアップの操作で利用します。
活動履歴 レコード閲覧 関連レコードの操作で利用します。

※ 生成した各トークンはメモしておいてください。

ルックアップの操作

案件管理アプリでは、顧客管理アプリに対して顧客名をキーにルックアップを行い、部署名や担当者名の値をコピーしています。
ルックアップの操作

なお、サンプルコード中の以下の値は、ご利用環境に応じて変更してください。

  • <SUBDOMAIN>:ご利用環境のサブドメイン
  • <案件管理アプリのアプリID>:メモした案件管理アプリのアプリID
  • <ユーザー名とパスワードを:で結合してBase64エンコードした値>:ユーザー名とパスワード名を :(半角コロン)で結合した文字列を Base64エンコードした値
  • <案件管理アプリのAPIトークン>:メモした案件管理アプリの API トークン
  • <顧客管理アプリのAPIトークン>:メモした顧客管理アプリの API トークン

Before

ルックアップフィールドを含むレコードの登録更新をする場合、API トークン認証は利用できず、パスワード認証での実行が必要でした。
例:レコードの登録(1件)

パスワード認証の場合、REST API を実行するアカウントが必要です。
また、実行アカウントの kintone 操作に対する権限範囲が大きくなりがちなため、認証情報が流出したときのリスクが大きくなります。

After

2019年12月の定期メンテナンス以降では、API トークンを使って、ルックアップフィールドの値を含むレコードの登録や更新操作ができるようになります。

リクエストヘッダーには、レコードを登録したいアプリとルックアップ元アプリの API トークンを指定します。

API トークンは、生成したアプリに対する操作のみ権限を持つため、セキュリティを考慮できます。

関連レコードの操作

案件管理アプリでは、案件管理アプリの「レコード番号」と活動履歴アプリの「案件管理レコード番号」※ に一致する活動履歴アプリのレコードを関連レコードとして表示します。
※ 正確には、「案件管理レコード番号(関連レコード一覧紐付け用)」フィールドです。

関連レコードの操作

なお、サンプルコード中の以下の値は、ご利用環境に応じて変更してください。

  • <SUBDOMAIN>:ご利用環境のサブドメイン
  • <案件管理アプリのアプリID>:メモした案件管理アプリのアプリID
  • <活動履歴アプリのアプリID>:メモした活動履歴アプリのアプリID
  • <ユーザー名とパスワードを:で結合してBase64エンコードした値>:ユーザー名とパスワード名を :(半角コロン)で結合した文字列を Base64エンコードした値
  • <案件管理アプリのAPIトークン>:メモした案件管理アプリの API トークン
  • <活動履歴アプリのAPIトークン>:メモした活動履歴アプリの API トークン

 Before

「案件に紐づく活動履歴の対応日時が2018年である案件管理アプリのレコードを取得したい」場合など、
関連レコードに表示された情報を検索クエリとしてレコードを取得する操作は、パスワード認証を使う必要がありました。
例:レコードの一括取得(クエリで条件を指定)

API トークン認証で行うのであれば、2つのリクエストにわける必要があります。
(1) 活動履歴アプリに対してレコードを絞り込む
(2) (1)で取得した活動履歴アプリの「案件管理レコード番号」フィールドの値を使って、案件履歴アプリに問い合わせる

※ リクエスト結果の処理には jq コマンド(※ 要インストール)を利用しています。

After 

今回、複数API トークンでの関連レコードの操作が可能になり、API トークン認証を使って、1回のリクエストで関連レコードに表示された情報をクエリに指定しレコードを取得できるようになりました。

リクエストヘッダーには、レコードを取得したいアプリと関連レコードとして表示したいアプリの API トークンを指定します。

おわりに 

複数 API トークン対応により、複数のアプリにまたがる REST API での操作が API トークンを使ってできるようになりました。

Cybozu Days 2019 で発表がありましたが、2020年以降にはアプリ設定を行う REST API の API トークン対応も予定されています。

ぜひとも今後の kintone アップデートにご期待ください。

このTipsは、2019年12月版 kintoneで確認したものになります。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

ログインしてコメントを残してください。