A comprehensive PHP client library for interacting with the Zoho Analytics API v2, featuring OAuth2 authentication, embed URL generation, data export, and comprehensive testing capabilities.
- OAuth2 Authentication with automatic token refresh
- Embed URL Generation for dashboards and reports
- Shared URL Creation (login required)
- Private URL Creation (no login required)
- Data Export in multiple formats (CSV, JSON, XML, PDF, etc.)
- Comprehensive Testing Suite with interactive mode
- Environment Variable Support for secure credential management
- Token Management with automatic persistence
- PHP 7.4 or higher
- Composer
- Zoho Analytics account
- Zoho OAuth application credentials
-
Clone the repository:
git clone <repository-url> cd zoho-analytics-auth
-
Install dependencies:
composer install
-
Set up credentials:
cp .env.example .env # Edit .env with your actual credentials
Copy .env.example
to .env
and fill in your credentials:
ZOHO_CLIENT_ID=your_client_id_here
ZOHO_CLIENT_SECRET=your_client_secret_here
ZOHO_ORG_ID=your_organization_id_here
Create these files in your parent directory:
../../ZOHO-CLIENT-ID.txt
../../ZOHO-CLIENT-SECRET.txt
../../ZOHO-ORG-ID.txt
-
OAuth Application:
- Visit Zoho API Console
- Create a new application
- Note your Client ID and Client Secret
-
Organization ID:
- Log into Zoho Analytics
- Go to Settings β Organization
- Find your Organization ID
# Run OAuth authentication flow
php run.php
# Run comprehensive test suite
php test.php
# Interactive testing mode
php test.php interactive
require_once 'vendor/autoload.php';
use Codechap\ZohoAnalyticsApi\Auth;
use Codechap\ZohoAnalyticsApi\Client;
// Initialize authentication
$auth = new Auth();
$auth->set('clientId', 'your_client_id')
->set('clientSecret', 'your_client_secret')
->set('redirectUri', 'http://localhost:8080')
->set('accountsUrl', 'https://accounts.zoho.eu')
->set('scopes', [
'ZohoAnalytics.data.all',
'ZohoAnalytics.metadata.read',
'ZohoAnalytics.embed.read',
'ZohoAnalytics.embed.update'
]);
// Create API client
$client = new Client($auth, 'your_org_id');
// Example: Create embed URL
$config = [
'includeTitle' => true,
'includeToolBar' => true,
'validityPeriod' => 3600
];
$result = $client->makeRequest('GET', "/restapi/v2/workspaces/{$workspaceId}/views/{$viewId}/publish/embed", [
'query' => ['CONFIG' => json_encode($config)]
]);
- Workspace Listing - List all accessible workspaces
- View Listing - List views within a workspace
- Embed URLs - Create time-limited embed URLs (no login required)
- Shared URLs - Create shared URLs (login required)
- Private URLs - Create private URLs (no login required)
- Data Export - Export data in various formats
- Token Refresh - Test automatic token renewal
php test.php interactive
Menu options:
[0]
List workspaces[1]
List views in workspace[2]
Create embed URL[3]
Create shared URL[4]
Create private URL (no login)[5]
Test advanced embed options[6]
Export data from view[7]
Test token refresh[8]
Run full test suite
php test.php
Runs all tests automatically and provides comprehensive output including:
- Authentication status
- Available workspaces and views
- Generated URLs for testing
- Export capabilities
- Error diagnostics
- Environment Variables: Preferred method for credential storage
- File Exclusion: All credential files are gitignored
- Token Security: Tokens are stored locally and never committed
- No Hardcoding: No credentials are hardcoded in the codebase
The application uses minimal required scopes:
ZohoAnalytics.data.all
- Data accessZohoAnalytics.metadata.read
- Workspace/view metadataZohoAnalytics.embed.read
- Embed URL creationZohoAnalytics.embed.update
- Private URL creation
Endpoint | Purpose | Login Required | Expiry |
---|---|---|---|
/publish/embed |
Embed URLs | No | Configurable (default: 1h) |
/publish |
Shared URLs | Yes | Permanent |
/publish/privatelink |
Private URLs | No | Configurable |
/data |
Data Export | N/A | N/A |
Feature | Embed URL | Shared URL | Private URL |
---|---|---|---|
Login Required | β No | β Yes | β No |
Expiry Control | β Yes | β No | β Yes |
Security | Time-based | Login-based | Key-based |
Use Case | Embedding | Sharing | Public access |
If you get SECURITY_NOT_PERMITTED
errors:
-
User Permissions:
- Must have 'Workspace Admin' or 'Workspace Editor' role
- Must have 'Embed' permissions enabled
-
OAuth Scopes:
- Ensure all required scopes are granted
- Re-authenticate if you added new scopes
-
Organization Settings:
- Enable 'Embed Reports' in Organization permissions
- Check domain restrictions
- Invalid Credentials: Check environment variables or credential files
- Token Expired: Run
php run.php
to re-authenticate - Missing Permissions: Verify user role in Zoho Analytics workspace
- Network Issues: Check firewall settings for OAuth callbacks
zoho-analytics-auth/
βββ src/
β βββ Auth.php # OAuth2 authentication handler
β βββ Client.php # API client with request handling
βββ test.php # Comprehensive testing suite
βββ run.php # OAuth authentication flow
βββ export.php # Data export examples
βββ .env.example # Environment configuration template
βββ .gitignore # Security exclusions
βββ README.md # This file
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is open source. Please check the license file for details.
- Never commit credentials to version control
- Use HTTPS for all API requests
- Store tokens securely and never share them
- Test in development before production use
- Monitor API usage to stay within limits
For support or questions, please open an issue in the repository.