カオナビAPI Ver.2.0のtokenを取得する PHP+cURLのサンプルプログラム
2025/01/31
カオナビAPIのtoken、シート情報を取得する PHP+cURLのサンプルプログラム
カオナビAPI Ver.2.0の tokenとシートの情報を PHPの cURLを使用して取得するサンプルプログラムを作りました。
カオナビ API Ver.2.0 マニュアル
https://developer.kaonavi.jp/api/v2.0/index.html
カオナビAPI Ver.2.0のマニュアルですが、「Request samples」には、コマンドラインで実行する cURLのサンプルコマンドはありましたが、PHPのプログラムとして cURLを組み込む場合のサンプルプログラムがありませんでしたので作成してみました。
ただ、この記事は下記の条件を満たす方向けになりますので、非常にターゲットは狭いであろうと思っています。
・カオナビ APIを使用する方
・PHPで作成する方
・cURLで作成する方
PHPの cURLを使ってカオナビAPIの tokenを取得するサンプルプログラム
// 「カオナビ」APIで使用する情報を設定
$url = "https://api.kaonavi.jp/api/v2.0/token";
$username = "dummy_consumer_key"; // 各自の情報を設定
$password = "dummy_consumer_secret"; // 各自の情報を設定
$postData = ["grant_type" => "client_credentials"];
// cURLを実行
$getCurlRes = getCurl($url, $username, $password, $postData);
// cURLの実行結果を取得
$token = $getCurlRes["access_token"];
print_r($token);
// cURLを利用して APIにアクセスし結果を取得する関数
function getCurl($url=null,$username=null,$password=null,$postData=null,$headerData=null){
$option = [
CURLOPT_RETURNTRANSFER => true, //文字列として返す
CURLOPT_TIMEOUT => 3000, // タイムアウト時間
];
// 認証するための ID、PASS(KEY、SECRET)がある場合はそれを指定
if($username && $password){
$option[CURLOPT_USERPWD] = $username . ":" . $password;
}
// headerの指定がある場合はそれを指定
if($headerData){
$option[CURLOPT_HTTPHEADER] = $headerData;
}
// POST する値がある場合はそれを指定
if($postData){
$option[CURLOPT_POSTFIELDS] = $postData;
}
// cURLのセッションを初期化しオプションを指定
$ch = curl_init($url);
curl_setopt_array($ch, $option);
// cURLを実行
$json = curl_exec($ch);
// 実行結果の各値を取得
$info = curl_getinfo($ch);
$errorNo = curl_errno($ch);
$errorMsg = curl_error($ch);
// cURLの実行結果を判定
if ($errorNo !== CURLE_OK) {
// 「CURLE_OK(0)」以外のエラーコード
// エラーコードによって処理を分岐する場合はここに分岐処理を作成する
return "error";
}
// ステータスコードを判定
if ($info['http_code'] !== 200) {
// 200以外のステータスコードは正常な値を取得できていないためエラー処理をする
return "error";
}
// 実行結果は JSON形式で取得するため配列に変換して戻す
return json_decode($json, true);
}
実際に分かってしまえばシンプルなソースになりますが、cURLのオプションとして「CURLOPT_USERPWD」や「CURLOPT_POSTFIELDS」を指定する点が分かりにくかったですね。
cURLのオプションの「CURLOPT_USERPWD」「CURLOPT_POSTFIELDS」
その cURLのオプションの「CURLOPT_USERPWD」「CURLOPT_POSTFIELDS」や、それ以外のオプションについて詳細を確認したい場合は、下記の PHPマニュアルの「curl_setopt」を参照してください。
https://www.php.net/manual/ja/function.curl-setopt.php
cURLを実行した際に発生するエラーナンバー
cURLを利用して APIにアクセスする処理は「getCurl」として関数化していますので、カオナビ API以外の APIへアクセスする際も汎用的に使用できるかと思います。
その際「$errorNo = curl_errno($ch);」で取得しているエラーナンバーとしてどのような値があるのかについて詳細を確認したい場合は、下記の PHPマニュアルの「curl_errno」を参照してください。
https://www.php.net/manual/ja/function.curl-errno.php
また、上記のサンプルプログラムは、httpのレスポンスとして受信するヘッダ情報を元にエラー処理を分岐させるような処理は作成していません。
もし、それらを実装したい方は下記の記事が参考になるかと思います。
https://ondotori.webstorage.jp/docs/api/reference/api_sample.html
また、cURLの関数に関しては下記に改めて解説した記事を書きましたので、併せて参考にしてください。
「PHPで APIにアクセスする際などに使用する cURLのサンプルプログラム」
カオナビ APIの「Request samples」として Linux系(Mac)でコマンドで実行する際のサンプルとして下記が提示してあります。
curl -X POST https://api.kaonavi.jp/api/v2.0/token \ -u 'dummy_consumer_key:dummy_consumer_secret' \ -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' \ -d 'grant_type=client_credentials'
cURLのコマンドのオプションとして記述がある「-X」「-u」「-H」「-d」はそれぞれ下記の意味になっています。
「-X」
HTTPメソッドの指定で「POST」「GET」などを指定する
「-u」
「--user」と記述することもできて、ユーザID、PASSを指定する
ID、PASSは「:(コロン)」で区切る
「-H」
HTTPヘッダーを指定する
「-head」「--head」と記述することもできる
「-d」
HTTP Bodyにパラメーターを設定して POSTする場合の値を指定する
これらについては下記のサイトを参考にしています。
https://qiita.com/shtnkgm/items/45b4cd274fa813d29539
ちなみに、Linux(Mac)系では、それぞれの値を囲むのは「’(シングルクォート)」「”(ダブルクォート)」のどちらを使用しても問題ありません。
ですが、Windows系では「’(シングルクォート)」を使用すると正しく処理が実行されずにエラーになりますので注意が必要です。「”(ダブルクォート)」を使用しましょう。
先の項目で取得した Tokenを利用してカオナビAPIのシートのレコードを取得するサンプルプログラム
Tokenを取得したのち、その Tokenを利用して、登録してあるシートのレコードを取得する処理は下記のようになります。
// 「カオナビ」APIで使用する情報を設定 $url = "https://api.kaonavi.jp/api/v2.0/sheets/9999"; // 9999 の部分は取得対象のシートIDを指定 $headerData = [ "Content-Type: application/json", "Kaonavi-Token: " . $getCurlRes["access_token"], // Tokenは 前項で取得した Tokenを指定する ]; // cURLを実行(cURLは Tokenを取得したときに使用した関数を使用) $getCurlRes = getCurl($url, "", "", "", $headerData); // cURLの実行結果を取得 $token = $getCurlRes["access_token"]; print_r($getCurlRes);
ヘッダー情報に前項で取得した Tokenを指定して、cURLでアクセスすることでシート情報を取得することができます。
また、この処理で取得するシートの情報は結構階層が多い多段階の配列になっています。
そのため、「print_r」「var_export」などを使用して配列の構造を表示させながら、必要な項目の値を取得するといいでしょう。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
AdminerはphpMyAdmin代替のデータベース管理ツール
AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。
-
-
指定した数で文字列を丸める(n文字目で…にする)関数substr、mb_substr、mb_strimwidthの違い
文字列を指定された数で抜き出すPHPの関数、substr、mb_substr、mb_strimwidthについての解説。似た関数だが引数の指定方法が違ったり、文字数がバイト数か文字数かも違ったり、注意が必要だ。
-
-
連想配列のキーも値もまとめてhtmlspecialchars()でサニタイズする関数の作成解説
PHPの配列・連想配列のキーと値をまとめてhtmlspecialchars()関数でサニタイズ(無害化、無毒化)を行う関数を作成。連想配列のキーはarray_map()関数でのサニタイズは無理。
-
-
サーバ移転、PHPバージョンアップでPHPのソースコードが表示される・ショートタグのPHPが動かない
PHPでショートタグを使うのは危険。サーバ移転やバージョンアップで動かなくなる!ソースが丸見え、設定情報流出のリスクが!php.iniのshort_open_tagの設定を再確認。
-
-
複数銘柄を指定して株価チャートを一覧するツール公開
入力銘柄の5日間、3か月間、6か月間、1年間、2年間の株価チャートを一覧表示しますのでチャートで売買判断をするのに最適です。
-
-
include、requireのパス指定をdirname(__FILE__)、__DIR__と書く理由
include、requireのパスの指定を dirname(__FILE__)、__DIR__で記述する理由に付いて解説。相対パス、絶対パスを直書き、パスを書かない場合は何が問題かを説明。
-
-
PHPで1ヵ月前、先月、今月1日、来月末の日付などの算出はDateTimeImmutableを使う
PHPには日時をオブジェクトとして生成する関数「DateTimeImmutable」「DateTime」が用意されている。これを利用して1ヶ月後、月初日、月末日、5日後などを指定して日付を取得できる。
-
-
配列の値をテキスト表示する際に「、」でつなげるときの処理方法の一例
配列の値を「、」でつないで出力する際、単純にforeachで繰り返し処理をすると「イヌ、サル、キジ、」となるが文字列最後の「、」を出力しない方法を3つ解説している。
-
-
PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方
PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方を解説。要素を取得する方法、そこから属性を取得する方法を解説。また、マニュアルにはない注意点なども解説。
-
-
PHPで APIにアクセスする際などに使用する cURLのサンプルプログラム
PHPのcURLを使用して各種APIにアクセスするサンプルプログラムを作成し、その処理を解説。カオナビAPIのみならず、他の多くのAPIにアクセスする際にも使用できる。