- Added setup-zoho-credentials.php script to help generate OAuth credentials - Added check-permissions.php tool to diagnose file access issues - Updated diagnostics system to better identify common problems - Added detailed steps for setting up Zoho CRM integration 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			125 lines
		
	
	
		
			No EOL
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			No EOL
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Zoho CRM Credentials Setup Script
 | |
|  * 
 | |
|  * This script helps you generate the Zoho CRM credentials needed for the integration.
 | |
|  * Run this script on your staging server to complete the OAuth flow and obtain a refresh token.
 | |
|  * 
 | |
|  * Usage: php setup-zoho-credentials.php
 | |
|  */
 | |
| 
 | |
| echo "\n=== Zoho CRM Credentials Setup ===\n\n";
 | |
| 
 | |
| // Get user input
 | |
| echo "Step 1: Enter your Zoho CRM OAuth Application details\n";
 | |
| echo "------------------------------------------------\n";
 | |
| echo "These can be created at https://api-console.zoho.com/\n\n";
 | |
| 
 | |
| echo "Enter your Client ID: ";
 | |
| $client_id = trim(fgets(STDIN));
 | |
| 
 | |
| echo "Enter your Client Secret: ";
 | |
| $client_secret = trim(fgets(STDIN));
 | |
| 
 | |
| // Validate input
 | |
| if (empty($client_id) || empty($client_secret)) {
 | |
|     die("Error: Client ID and Client Secret are required.\n");
 | |
| }
 | |
| 
 | |
| // Set staging server redirect URI
 | |
| $staging_url = "https://wordpress-974670-5399585.cloudwaysapps.com";
 | |
| $redirect_uri = "$staging_url/oauth/callback";
 | |
| 
 | |
| echo "\nUsing redirect URI: $redirect_uri\n";
 | |
| echo "Make sure this URL is added to your Zoho OAuth application's authorized redirect URIs.\n";
 | |
| 
 | |
| // Generate authorization URL
 | |
| $auth_url = "https://accounts.zoho.com/oauth/v2/auth?" . http_build_query([
 | |
|     'scope' => 'ZohoCRM.settings.all,ZohoCRM.modules.all,ZohoCRM.users.all,ZohoCRM.org.all',
 | |
|     'client_id' => $client_id,
 | |
|     'response_type' => 'code',
 | |
|     'access_type' => 'offline',
 | |
|     'redirect_uri' => $redirect_uri,
 | |
|     'prompt' => 'consent'
 | |
| ]);
 | |
| 
 | |
| echo "\nStep 2: Authorization\n";
 | |
| echo "-------------------\n";
 | |
| echo "Open this URL in your browser:\n\n";
 | |
| echo "$auth_url\n\n";
 | |
| echo "After authorization, you'll be redirected to:\n";
 | |
| echo "$redirect_uri?code=YOUR_AUTH_CODE\n\n";
 | |
| 
 | |
| echo "Enter the authorization code from the URL: ";
 | |
| $auth_code = trim(fgets(STDIN));
 | |
| 
 | |
| if (empty($auth_code)) {
 | |
|     die("Error: Authorization code is required.\n");
 | |
| }
 | |
| 
 | |
| // Exchange code for tokens
 | |
| echo "\nStep 3: Exchanging code for tokens...\n";
 | |
| echo "-----------------------------------\n";
 | |
| 
 | |
| $token_url = 'https://accounts.zoho.com/oauth/v2/token';
 | |
| $token_params = [
 | |
|     'grant_type' => 'authorization_code',
 | |
|     'client_id' => $client_id,
 | |
|     'client_secret' => $client_secret,
 | |
|     'redirect_uri' => $redirect_uri,
 | |
|     'code' => $auth_code
 | |
| ];
 | |
| 
 | |
| // Use cURL to make the request
 | |
| $ch = curl_init($token_url);
 | |
| curl_setopt($ch, CURLOPT_POST, true);
 | |
| curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($token_params));
 | |
| curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 | |
| curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
 | |
| 
 | |
| $response = curl_exec($ch);
 | |
| $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 | |
| curl_close($ch);
 | |
| 
 | |
| if ($http_code !== 200) {
 | |
|     echo "Error: Failed to get tokens (HTTP $http_code)\n";
 | |
|     echo "Response: " . $response . "\n";
 | |
|     exit(1);
 | |
| }
 | |
| 
 | |
| $token_data = json_decode($response, true);
 | |
| 
 | |
| if (!isset($token_data['access_token']) || !isset($token_data['refresh_token'])) {
 | |
|     echo "Error: Invalid token response\n";
 | |
|     echo "Response: " . $response . "\n";
 | |
|     exit(1);
 | |
| }
 | |
| 
 | |
| // Success! Display the values
 | |
| echo "✓ Tokens received successfully!\n\n";
 | |
| echo "Here are your Zoho CRM credentials:\n";
 | |
| echo "--------------------------------\n";
 | |
| echo "Client ID: $client_id\n";
 | |
| echo "Client Secret: $client_secret\n";
 | |
| echo "Refresh Token: " . $token_data['refresh_token'] . "\n\n";
 | |
| 
 | |
| // Generate wp-config.php code
 | |
| echo "Add these lines to your wp-config.php file:\n";
 | |
| echo "----------------------------------------\n";
 | |
| echo "define('ZOHO_CLIENT_ID', '$client_id');\n";
 | |
| echo "define('ZOHO_CLIENT_SECRET', '$client_secret');\n";
 | |
| echo "define('ZOHO_REFRESH_TOKEN', '" . $token_data['refresh_token'] . "');\n";
 | |
| echo "define('ZOHO_DIAGNOSTICS_ENABLED', true);\n\n";
 | |
| 
 | |
| // Generate environment variables setup
 | |
| echo "Or set these environment variables in your .env file:\n";
 | |
| echo "-----------------------------------------------\n";
 | |
| echo "ZOHO_CLIENT_ID=$client_id\n";
 | |
| echo "ZOHO_CLIENT_SECRET=$client_secret\n";
 | |
| echo "ZOHO_REFRESH_TOKEN=" . $token_data['refresh_token'] . "\n\n";
 | |
| 
 | |
| echo "To verify your setup, run the diagnostics script:\n";
 | |
| echo "--------------------------------------------\n";
 | |
| echo "$staging_url/wp-content/plugins/hvac-community-events/includes/zoho/diagnostics.php?run_diagnostics=true\n\n";
 | |
| 
 | |
| echo "=== Setup Complete! ===\n"; |