Configuration
Before you get started with creating your PHP application, you need to register your client and authenticate the app with Zoho.
Mandatory Keys | Optional Keys |
---|---|
user | logger |
environment | store |
token | SDKConfig |
requestProxy | |
resourcePath |
The user key will be used to store and identify the tokenstore details in the DB or File Storage for token persistence. The environment key contains the domain information to make API calls. The token key represents the OAuth info, including the clientID, clientSecret, grantToken, redirectURL, refreshToken or accessToken depending on the flow that you use. Refer to create an instance of OAuthToken section below for more details.
Follow the below steps to configure the SDK.
Create an instance of the Logger Class to log exception and API information. By default, the SDK constructs a Logger instance with level - INFO and file_path - sdk_logs.log, created in the current working directory.
/* * Create an instance of Logger Class that requires the following * level -> Level of the log messages to be logged. Can be configured by typing Levels "::" and choose any level from the list displayed. * filePath -> Absolute file path, where messages need to be logged. */ $logger = (new LogBuilder()) ->level(Levels::INFO) ->filePath("/Users/user_name/Documents/php_sdk_log.log") ->build();
Create an instance of UserSignature that identifies the current user.
//Create an UserSignature instance that takes user Email as parameter $user = new UserSignature("abc@zoho.com");
Configure the API environment which decides the domain and the URL to make API calls.
/* * Configure the environment * which is of the pattern Domain::Environment * Available Domains: USDataCenter, EUDataCenter, INDataCenter, CNDataCenter, AUDataCenter * Available Environments: PRODUCTION(), DEVELOPER(), SANDBOX() */ $environment = USDataCenter::PRODUCTION();
Create an instance of OAuthToken with the information that you get after registering your Zoho client. In the context of token persistence, the grant token flow and refresh token flow involve storing and persisting the token. However, the access token flow does not involve token persistence and the access token is directly utilized for API calls. Depending on the tokens available with you, choose grantToken flow, refreshToken flow or accessToken flow.
Use the following method for grantToken flow :
$token = (new OAuthBuilder()) ->clientId("clientId") ->clientSecret("clientSecret") ->grantToken("grantToken") ->redirectURL("redirectURL") ->build();
Use the following method for refreshToken flow :
$token = (new OAuthBuilder()) ->clientId("clientId") ->clientSecret("clientSecret") ->refreshToken("refreshToken") ->redirectURL("redirectURL") ->build();
Use the following method for accessToken flow :
$token = (new OAuthBuilder()) ->accessToken("accessToken") ->build();
Create an instance of TokenStore to persist tokens used for authenticating all the requests. By default, the SDK creates the sdk_tokens.txt created in the current working directory to persist the tokens.
Use the following method for DB Store.
/* * Create an instance of DBStore that requires the following * host -> DataBase host name. Default value "localhost" * databaseName -> DataBase name. Default value "zohooauth" * userName -> DataBase user name. Default value "root" * password -> DataBase password. Default value "" * portNumber -> DataBase port number. Default value "3306" * tabletName -> DataBase table name. Default value "oauthtoken" */ $tokenstore = (new DBBuilder()) ->host("hostName") ->databaseName("dataBaseName") ->userName("userName") ->password("password") ->portNumber("portNumber") ->tableName("tableName") ->build();
Use the following method for File Store.
$tokenstore = new FileStore("absolute_file_path");
Use the following method for Custom Store.
$tokenstore = new CustomStore();
Create an instance of SDKConfig containing the SDK configuration.
/* * By default, the SDK creates the SDKConfig instance * autoRefreshFields (default value is false) * true - all the modules' fields will be auto-refreshed in the background, every hour. * false - the fields will not be auto-refreshed in the background. The user can manually delete the file(s) or refresh the fields using methods from ModuleFieldsHandler(com\zoho\crm\api\util\ModuleFieldsHandler) * * pickListValidation (default value is true) * A boolean field that validates user input for a pick list field and allows or disallows the addition of a new value to the list. * true - the SDK validates the input. If the value does not exist in the pick list, the SDK throws an error. * false - the SDK does not validate the input and makes the API request with the user’s input to the pick list * * enableSSLVerification (default value is true) * A boolean field to enable or disable curl certificate verification * true - the SDK verifies the authenticity of certificate * false - the SDK skips the verification */ $autoRefreshFields = false; $pickListValidation = false; $enableSSLVerification = true; //The number of seconds to wait while trying to connect. Use 0 to wait indefinitely. $connectionTimeout = 2; //The maximum number of seconds to allow cURL functions to execute. $timeout = 2; $sdkConfig = (new SDKConfigBuilder()) ->autoRefreshFields($autoRefreshFields) ->pickListValidation($pickListValidation) ->sslVerification($enableSSLVerification) ->connectionTimeout($connectionTimeout) ->timeout($timeout) ->build();
Create an instance of RequestProxy containing the proxy properties of the user.
$requestProxy = (new ProxyBuilder()) ->host("proxyHost") ->port("proxyPort") ->user("proxyUser") ->password("password") ->build();
The path containing the absolute directory path to store user specific files containing module fields information. By default, the SDK stores the user-specific files within a folder in the current working directory.
$resourcePath = "/Documents/phpsdk-application";
Initialize the SDK and make API calls.