ふだん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);
こんなでいけました。
コメント
お世話になります、ZohoAPIV2への移行で悪戦苦闘しております。ほんとに資料が少ないなか参考になる記事ありがとうございます。現在SDKをレンタルサーバーにインストールする技術がなく、SDKなしで、PHPのcURL関数を使ってCRMのデータをリクエストできるまではできましたが、トークンをリフレッシュできず、1時間で使えなくなります。どの資料を見てもSDKで問題解決しているようなので、レンタルサーバーにSDKをインストールする方向で進めようと思うのですが、本記事の
vendor\zohocrm\php-sdk\src\resources\oauth_configuration.properties
がどこの場所のことなのか分からず、ご教授願います。
ご連絡ありがとうございます。なお、続編を以下に記載しています
https://labs.fleuraison.net/archives/1281
ご質問についてのお返事です。
composerを使ってインストールするとそのプロジェクトのルートにvendorフォルダが作られているかと思います。
そのvendorフォルダ以下にあります。ただ、上記の続編を見て頂けると、このoauth_configuration.propertiesを編集しなくても良いことがわかるかと思います。
状況がわかれば、詳しくお伝えしますので、またお返事下さい!