カオナビ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
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説
お問い合わせ等のメールフォームから送ったメールがスパム扱いされる!その対策としてライブラリ「Phpmailer」を使う方法を解説。関数化していますのでコピペでOK。
-
-
PHPで月末から1ヶ月後「+1 month」を算出すると想定する日付にならない場合がある
PHPでは月末の1ヶ月後が想定した日付にならない場合がある。原因はバグではなくPHPの1ヶ月後の定義によるもの。なので必要とする日付を定義しそれに合わせてDateTime、modifyを使用して算出方法を解説している。
-
-
配列の値をテキスト表示する際に「、」でつなげるときの処理方法の一例
配列の値を「、」でつないで出力する際、単純にforeachで繰り返し処理をすると「イヌ、サル、キジ、」となるが文字列最後の「、」を出力しない方法を3つ解説している。
-
-
路線・駅検索をPHPで実装する方法解説。GoogleMapsの緯度経度から計算し検索
路線・駅検索の仕組みの構築は大変。登録する側も最寄り駅が多い場合は大変。なので簡易に実装するため緯度経度に基づき直線距離を計算する処理を考案して実装して、その処理を解説。
-
-
QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ
CakePHP2用のQRコード作成ライブラリ「cakePHP-QR-Code-Helper」をプレーンのPHPでも使うためのカスタマイズ方法を解説。1ファイルを設置するだけでQRコードが作れるため使い勝手がいい。
-
-
JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()
JSONとは「JavaScript Object Notation」の略でテキストベースのデータフォーマット。JSONの値をPHPで配列に変換するWebツールの紹介とその処理「json_encode()」「json_decode()」関数の解説。
-
-
Smartyの Syntax Errorの原因はスペースかも
Smartyのなかなか原因がつかめない Syntax Errorの原因はスペースかもしれません。
-
-
ECCUBEの管理画面のSSL設定をインストール後に変更する方法
ECCUBEをインストールした後から管理画面のSSL設定を変更する方法を解説します。config.phpファイルのHTTPS_URLとADMIN_FORCE_SSLの値を変更すればOK。
-
-
PHPで APIにアクセスする際などに使用する cURLのサンプルプログラム
PHPのcURLを使用して各種APIにアクセスするサンプルプログラムを作成し、その処理を解説。カオナビAPIのみならず、他の多くのAPIにアクセスする際にも使用できる。
-
-
PHP range関数を使って階乗と重複組み合わせを計算
PHPの range関数を使って階乗と重複組み合わせを計算し、それを元に乱数発生器を作成しました。