ふだんZOHO CRMというとても安く使えるCRMサービスを使っています。
このたび現在のZOHO CRM APIの仕様がv1からv2への移行というタイミングでシステムの入れ替え作業に取り掛かっていたところ、ドキュメントがあまりに無くて苦労しました。
以下、備忘録的に載せておきます。
実践編
https://www.zoho.com/crm/help/api/v2/ ⇒お勧め
https://www.zoho.com/crm/help/developer/server-side-sdks/php.html
これを読んでもわからないことが多く、動かしてみると帰納法的に理解できる点が多数ありました。
順にまとめていきます。
STEP.1 ZOHO Clientの登録
zohoに普通にログインした状態にて、
https://accounts.zoho.com/developerconsole
を表示します
「クライアントIDの追加」というボタンをクリックし、入力します
<td>
有効なクライアント名を入力してください
</td>
<td>
例:yourdomain.com
</td>
<td>
http://www.example.com/oauth2callback
</td>
<td>
Web basedを選びます
</td>
これで、作成をクリックします。
そうすると、クライアントIDと、クライアントシークレットが表示されます。
STEP.2 PHPプログラムの設定
zohooauthというDBを作成し、更に以下のようにテーブルを作成します
vendor\zohocrm\php-sdk\src\resources\oauth_configuration.properties に以下の内容を記述
STEP.3 ComposerでSDKをインストール
Composer自体をまだインストールできていない場合は、このコマンド
$ curl -sS https://getcomposer.org/installer | php本体を入れます。
composer require zohocrm/php-sdk前に取得したクライアントID、クライアントシークレットなどを入れて、アクセストークン、リフレッシュトークンを取得します
以下のような簡易的なプログラムを作成して、getToken.phpなどと保存します。
<?php
require_once __DIR__.'/vendor/autoload.php';
$configuration = [
"client_id" =>"クライアントID",
"client_secret" =>"クライアントシークレット",
"redirect_uri" =>"リダイレクトURL",
"currentUserEmail" =>"メール",
"applicationLogFilePath" =>"/app", //適当に
];
ZCRMRestClient::initialize($configuration);
$oAuthClient = ZohoOAuth::getClientInstance();
$grantToken = "(以下で取得するトークンを指定)";
$oAuthTokens = $oAuthClient->generateAccessToken($grantToken);
var_dump($oAuthTokens);続いて、再度、https://accounts.zoho.com/developerconsoleのAPI認証の画面に戻ります。
以下のように、プロパティのボタンをクリックして、セルフクライアントをクリックします。

スコープには、ZohoCRM.modules.all ⇒これが重要!
期限は、念の為に10分
を指定します。コードを表示ボタンをクリックします。ここで表示される値を、上のソースコード$grantTokenの値として入れます。
そこまで出来たら、
php getToken.phpこれでOK。DBにトークンが作成されます。
試してみる
<?php
require_once __DIR__.'/vendor/autoload.php';
$configuration = [
"client_id" =>"クライアントID",
"client_secret" =>"クライアントシークレット",
"redirect_uri" =>"リダイレクトURL",
"currentUserEmail" =>"メール",
"applicationLogFilePath" =>"/app", //適当に
];
ZCRMRestClient::initialize($configuration);
$zcrmModuleIns = ZCRMModule::getInstance("Contacts");
$bulkAPIResponse=$zcrmModuleIns->getRecords();
$recordsArray = $bulkAPIResponse->getData();
var_dump($recordsArray);こんなでいけました。