カオナビ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パーミッション変更のchmod関数・モードを変数で指定する方法
パーミッション変更関数であるchmod関数の第二引数、ファイルモードの指定に変数を使う場合は8進数に変換するoctdec関数を使って変換します。
-
-
ECCUBEでカード決済NGの受注情報をマイページ購入履歴に表示しない方法解説
ECCUBEでカード決済に失敗しても購入履歴一覧に注文情報(受注情報)が表示される問題への対処方法を解説。受注情報レコードの作成の流れとステイタスについても解説。
-
-
ECCUBE mtb_constants initパラメータ設定の項目を追加する方法
ECCUBEのパラメータ設定で設定できる項目を追加する方法を説明します。
-
-
ECCUBEでテンプレートファイルのファイルサイズは10MB以下のものを使用してくださいのエラーが出た場合
テンプレートをアップロードする際にファイルサイズが大きすぎてエラーが表示される際の対処方法解説。パラメータ設定で設定する制限について解説を行っています。
-
-
ファイル変更だけ!ECCUBEの本番から開発環境をコピーする手順を解説
ECCUBEを本番から開発環境をコピーする際の手順を解説。PGMメンテに必要な開発環境を構築する手順を解説。ECCUBEの仕組みは簡単なので作業は5分ほど。
-
-
Smartyの修飾子regex_replaceで正規表現の後方参照・PHPではpreg_replace
ECCUBEで使われているSmartyで文字列を正規表現で置換し後方参照で値を利用する装飾子regex_replaceの解説です。細かな条件がありますので注意が必要です。
-
-
ECCUBEの管理画面のSSL設定をインストール後に変更する方法
ECCUBEをインストールした後から管理画面のSSL設定を変更する方法を解説します。config.phpファイルのHTTPS_URLとADMIN_FORCE_SSLの値を変更すればOK。
-
-
ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある
2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。
-
-
パーミッション(属性)一括変更ツール・WordPress最適化済
WordPressのパーミッション(属性)を一括変更するツールを作成!ファイル、フォルダのパーミッションが一覧表示でき、ファイルを選んでパーミッションの変更が行えます。
-
-
JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()
JSONとは「JavaScript Object Notation」の略でテキストベースのデータフォーマット。JSONの値をPHPで配列に変換するWebツールの紹介とその処理「json_encode()」「json_decode()」関数の解説。