Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Zoho Laravel Package

socialiteproviders/zoho

Zoho OAuth 2.0 provider for Laravel Socialite. Adds Zoho single sign-on to your Laravel app through the SocialiteProviders manager, so users can log in with their Zoho account using the familiar Socialite::driver('zoho') API. Install via Composer and configure your client ID and secret.

View on GitHub
Deep Wiki
Context7

SocialiteProviders Zoho adds a Zoho OAuth 2.0 provider to Laravel Socialite, letting your application authenticate users with their Zoho accounts through the familiar Socialite API.

It registers a zoho driver so you can call Socialite::driver('zoho') for redirects, callbacks, and user retrieval—no custom OAuth code required. Credentials and scopes are configured in config/services.php and the provider's event listener.

  • Drop-in zoho Socialite driver
  • OAuth 2.0 authorization code flow
  • Configurable scopes and Zoho data centers (.com, .eu, .in)
  • Returns a standard Socialite User object
Frequently asked questions about Zoho
How do I install SocialiteProviders/Zoho in a Laravel app?
Install it with Composer using composer require socialiteproviders/zoho, alongside laravel/socialite. Register the SocialiteProviders Manager service provider and add a SocialiteWasCalled listener for SocialiteProviders\Zoho\ZohoExtendSocialite in your EventServiceProvider so the zoho driver is registered. Then add your Zoho credentials to config/services.php and redirect users with Socialite::driver('zoho')->redirect().
How do I configure the Zoho client ID, secret, and redirect URI?
Add a zoho entry to config/services.php containing client_id, client_secret, and redirect, and keep the actual values in your .env file, for example ZOHO_CLIENT_ID and ZOHO_CLIENT_SECRET. Generate the client in the Zoho API console and copy the exact redirect URI of your callback route. The redirect value in Laravel must match the URI registered on the Zoho client character for character, or the authorization step will fail.
Which Laravel versions does socialiteproviders/zoho support?
This package is a SocialiteProviders subtree split, so its supported Laravel range is whatever illuminate/support constraint ships in composer.json for the release you install. Check that constraint, or run composer why-not on your lockfile, before assuming it fits a Laravel 10 or 11 application. The 4.1.0 release note only mentions PHP 8 support, so verify the framework constraint rather than inferring it.
Does this package support PHP 8?
Yes, release 4.1.0 adds PHP 8 support, which is the entire contents of that release note. The note does not distinguish PHP 8.0 from 8.2 or 8.3, so confirm the exact php constraint in composer.json and check that the CI matrix actually covers the version you deploy. If you are still on PHP 7.4, stay on the 4.0.x line until you upgrade, because a platform-support release may raise the minimum.
What Zoho scopes should I request for sign-in?
Request only the scopes you need for the data you read after login, since Zoho scope names are service-specific and granted per Zoho product. Configure them in the zoho entry in config/services.php and keep them consistent with what is enabled for that client in Zoho. Over-broad scopes produce a more alarming consent screen, and scopes the client is not authorized for typically surface as invalid_scope errors.
How do I retrieve the authenticated Zoho user after the callback?
In your callback route, call Socialite::driver('zoho')->user(), which returns a Socialite user object carrying the Zoho identifier plus name, email, and token data where Zoho exposes them. Match that identifier to a local user, creating one if needed, and sign them in with Auth::login(). Only persist access and refresh tokens if you intend to call Zoho APIs on the user's behalf.
How can I test Zoho login without calling Zoho in CI?
Mock the Socialite driver, or fake the underlying HTTP calls, so tests never reach Zoho's OAuth endpoints. The usual pattern is to bind a stub driver that returns a Socialite user instance, then assert your callback finds or creates the correct local user and session. Keep a separate manual or nightly integration test against a real Zoho sandbox client so the live flow is still exercised occasionally.
Who maintains socialiteproviders/zoho and how are releases handled?
It is a read-only subtree split of the SocialiteProviders/Providers monorepo, so code changes land upstream and are synced here. Issues, pull requests, and changelogs should be tracked in the main SocialiteProviders repository rather than in this split. Version numbers follow the monorepo, which means a minor release such as 4.1.0 can apply to every provider at once, not just Zoho.
Do I need laravel/socialite as well, or should I write my own Zoho driver?
You still need laravel/socialite installed, because this package only registers a Zoho driver with it through the SocialiteProviders Manager. Writing your own driver makes sense if you need custom Zoho endpoints, region-specific Zoho accounts domains, or a heavily customized user mapping. For standard Zoho sign-in, using the maintained provider is far less code to own and test.
Why am I getting a redirect_uri mismatch or invalid_client error from Zoho?
The redirect URI registered on the Zoho client must match the value in config/services.php exactly, including scheme, host, port, path, and any trailing slash. An invalid_client error usually means the client ID or secret is wrong, the client is not configured as a server-based application, or the credentials were created in a different Zoho data center than the one you are authenticating against. Clear the config cache after changing env values and confirm the requested scopes are enabled for that client.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource