ZOHO CRMのAPIv2があまりに分からずに苦労した話

1 Mins read

ふだん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>
クライアント名
クライアントのドメイン
認証済みのリダイレクト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"              =&gt;"クライアントID",
	"client_secret"          =&gt;"クライアントシークレット",
	"redirect_uri"           =&gt;"リダイレクトURL",
	"currentUserEmail"       =&gt;"メール",
	"applicationLogFilePath" =&gt;"/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"              =&gt;"クライアントID",
	"client_secret"          =&gt;"クライアントシークレット",
	"redirect_uri"           =&gt;"リダイレクトURL",
	"currentUserEmail"       =&gt;"メール",
	"applicationLogFilePath" =&gt;"/app",    //適当に 
];
ZCRMRestClient::initialize($configuration);
$zcrmModuleIns = ZCRMModule::getInstance("Contacts");
$bulkAPIResponse=$zcrmModuleIns-&gt;getRecords();
$recordsArray = $bulkAPIResponse-&gt;getData(); 
var_dump($recordsArray);

こんなでいけました。