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

技術関連

ふだん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の追加」というボタンをクリックし、入力します

クライアント名 有効なクライアント名を入力してください
クライアントのドメイン 例:yourdomain.com
認証済みのリダイレクトURI http://www.example.com/oauth2callback
Client Type Web basedを選びます

これで、作成をクリックします。
そうすると、クライアント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);

こんなでいけました。

コメント

  1. Shinnosuke より:

    お世話になります、ZohoAPIV2への移行で悪戦苦闘しております。ほんとに資料が少ないなか参考になる記事ありがとうございます。現在SDKをレンタルサーバーにインストールする技術がなく、SDKなしで、PHPのcURL関数を使ってCRMのデータをリクエストできるまではできましたが、トークンをリフレッシュできず、1時間で使えなくなります。どの資料を見てもSDKで問題解決しているようなので、レンタルサーバーにSDKをインストールする方向で進めようと思うのですが、本記事の
    vendor\zohocrm\php-sdk\src\resources\oauth_configuration.properties
    がどこの場所のことなのか分からず、ご教授願います。

  2. hashimoto より:

    ご連絡ありがとうございます。なお、続編を以下に記載しています
    https://labs.fleuraison.net/archives/1281
    ご質問についてのお返事です。
    composerを使ってインストールするとそのプロジェクトのルートにvendorフォルダが作られているかと思います。
    そのvendorフォルダ以下にあります。ただ、上記の続編を見て頂けると、このoauth_configuration.propertiesを編集しなくても良いことがわかるかと思います。
    状況がわかれば、詳しくお伝えしますので、またお返事下さい!

タイトルとURLをコピーしました