Code Monkey home page Code Monkey logo

oauth2-zoho's Introduction

ZOHO Provider for OAuth 2.0 Client

Latest Version on Packagist Build Status Quality Score Total Downloads License

This package provides ZOHO OAuth 2.0 support for the PHP League's OAuth 2.0 Client.

To use this package, it will be necessary to have a ZOHO client ID and client secret. These are referred to as {zoho-client-id} and {zoho-client-secret} in the documentation.

Please follow the ZOHO instructions to create the required credentials.

Installation

You can install the package via composer:

composer require asad/oauth2-zoho

Usage

Authorization Code Flow

use Asad\OAuth2\Client\Provider\Zoho;

$provider = new Zoho([
    'clientId' => '{zoho-client-id}',
    'clientSecret' => '{zoho-client-secret}',
    'redirectUri' => 'http://localhost:8000/zoho/oauth2',
    'dc' => 'AU' //It will be optional if your ZOHO are in US location
]);

if (!isset($_GET['code'])) {
    // If we don't have an authorization code then get one
    $authUrl = $provider->getAuthorizationUrl([
        'scope' => [
            'ZohoCRM.modules.ALL', //Important: Define your data accessability scope here
            'ZohoCRM.settings.ALL',
        ],
        'access_type' => 'offline', //Important: If you want to generate the refresh token, set this value as offline
        'prompt' => 'consent'       //Important: Will not return a refresh token if this is not also set
    ]);

    $_SESSION['oauth2state'] = $provider->getState();
    header('Location: ' . $authUrl);
    exit;

    // Check given state against previously stored one to mitigate CSRF attack
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {

    unset($_SESSION['oauth2state']);
    exit('Invalid state');
} else {

    // Try to get an access token (using the authorization code grant)
    try {
        $token = $provider->getAccessToken('authorization_code', [
            'code' => $_GET['code']
        ]);

        //$user = $provider->getResourceOwner($token);


        echo $access_token = $token->getToken();

        echo $refresh_token = $token->getRefreshToken(); //Save this refresh token to somewehre

        echo $token->getExpires();

    } catch (\Exception $e) {
        //handle you exception
    }
}

Refreshing a Token

Refresh tokens are only provided to applications which request offline access. You can specify offline access by passing the access_type option in your getAuthorizationUrl() request.

use Asad\OAuth2\Client\Provider\Zoho;
use League\OAuth2\Client\Grant\RefreshToken;

$provider = new Zoho([
    'clientId' => '{zoho-client-id}',
    'clientSecret' => '{zoho-client-secret}',
    'dc' => 'AU' //It will be optional if your ZOHO are in US location
]);

$refreshToken = 'FromYourStoredData';
$grant = new RefreshToken();
$token = $provider->getAccessToken($grant, ['refresh_token' => $refreshToken]);

Testing

composer test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

oauth2-zoho's People

Contributors

tm1000 avatar asadku34 avatar phpfui avatar

Stargazers

Stierlitz avatar Thibaut J avatar  avatar Борис Грибов avatar Paul Blacknell avatar  avatar

Watchers

 avatar

oauth2-zoho's Issues

Can this package be used with Zoho Creator?

In the README I can't find any mention about what Zoho product this client is made for, but there is a link to Zoho CRM in the README. Does this mean this Provider can only be used with the CRM? Or does it also work to use oAuth with Zoho Creator?

Thanks in advance!

state is protected!

Cannot access protected property Asad\OAuth2\Client\Provider\Zoho::$state

here:

...
    if (!isset($_GET['code'])) {
      // If we don't have an authorization code then get one
      $authUrl = $provider->getAuthorizationUrl([
          'scope' => [
              'ZohoCRM.modules.ALL', //Important: Define your data accessability scope here
              'ZohoCRM.settings.ALL',
          ],
      ]);

      $_SESSION['oauth2state'] = $provider->state; //<---------- HERE!
...

Refreshtoken always returns null

First of all thanks for providing this provider.

When doing exactly as the example says I get the access token and expires too, but the refreshToken is always returned as null no matter if I set the 'access_type' to 'offline' as stated in the README.

According to the documentation of Zoho Creator it should always return a refreshToken.

Is the example on the README accurate? Am I missing something? Is this a known issue?

Thanks in advance,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.