カオナビ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を取得するサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
// 「カオナビ」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)でコマンドで実行する際のサンプルとして下記が提示してあります。
1 2 3 4 |
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を利用して、登録してあるシートのレコードを取得する処理は下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 「カオナビ」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」などを使用して配列の構造を表示させながら、必要な項目の値を取得するといいでしょう。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法
「PHP スクレイピング」で検索すると「phpQuery」ばかりヒットするが、10年以上も放置されている。なので今も開発が続いている「PHP Simple HTML DOM Parser」をオススメする。
-
路線・駅検索をPHPで実装する方法解説。GoogleMapsの緯度経度から計算し検索
路線・駅検索の仕組みの構築は大変。登録する側も最寄り駅が多い場合は大変。なので簡易に実装するため緯度経度に基づき直線距離を計算する処理を考案して実装して、その処理を解説。
-
Smartyの Syntax Errorの原因はスペースかも
Smartyのなかなか原因がつかめない Syntax Errorの原因はスペースかもしれません。
-
CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説
CentOS6系、7系のPHPバージョンを5.3から5.6、7.0、7.1にアップする作業手順と解説。yum updateコマンドを使い作業時間は約10分。コマンドの解説や引数の意味なども解説しているので役に立つはず。
-
QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ
CakePHP2用のQRコード作成ライブラリ「cakePHP-QR-Code-Helper」をプレーンのPHPでも使うためのカスタマイズ方法を解説。1ファイルを設置するだけでQRコードが作れるため使い勝手がいい。
-
sleepの秒指定は整数のみなので1.5秒はsleep、usleepを組み合わせる
PHPのプログラム処理を遅延させる「sleep()」は整数秒単位。「usleep()」は1秒未満のマイクロ秒単位。では「1.5」秒はどう表現するのか。「sleep()」「usleep()」を組み合わせる。その解説。
-
AdminerはphpMyAdmin代替のデータベース管理ツール
AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。
-
WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使う
strptimeはWindowsのPHPには未実装。LinuxとMacで挙動が異なる。PHP8.1で非推奨になる。なので日付のチェックはdate_parse_from_formatを使おう。使い方を詳細解説。
-
ECCUBEの問い合わせフォームに任意の値を引数として渡す方法
ECCUBEのお問い合わせフォームに値を固有の情報を送りそれに基づいて処理をする方法を解説。ボタンの設置、受け取り側のテンプレート、プログラムのサンプルソースを提供。
-
PHPで APIにアクセスする際などに使用する cURLのサンプルプログラム
PHPのcURLを使用して各種APIにアクセスするサンプルプログラムを作成し、その処理を解説。カオナビAPIのみならず、他の多くのAPIにアクセスする際にも使用できる。