ふだん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の追加」というボタンをクリックし、入力します
| クライアント名 |
| クライアントのドメイン |
| 認証済みのリダイレクトURI |
| Client Type |
これで、作成をクリックします。
そうすると、クライアントIDと、クライアントシークレットが表示されます。
STEP.2 PHPプログラムの設定
zohooauthというDBを作成し、更に以下のようにテーブルを作成します
CREATE TABLE `oauthtokens` ( `useridentifier` varchar(100) COLLATE utf8mb4_bin NOT NULL, `accesstoken` varchar(100) COLLATE utf8mb4_bin NOT NULL, `refreshtoken` varchar(100) COLLATE utf8mb4_bin NOT NULL, `expirytime` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
vendor\zohocrm\php-sdk\src\resources\oauth_configuration.properties に以下の内容を記述
client_id= client_secret= redirect_uri= accounts_url=https://accounts.zoho.com access_type=offline persistence_handler_class=ZohoOAuthPersistenceHandler db_port=3306 db_username=mysql_user db_password=mysql_pw
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);
こんなでいけました。