shabeer / foodics-ouath2-merchant
Foodics OAuth 2.0 Client Provider for The PHP League OAuth2-Client
Installs: 2 424
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- league/oauth2-client: ^2.0
Requires (Dev)
- eloquent/phony-phpunit: ^4.0.0
- jakub-onderka/php-parallel-lint: ^0.9.2
- mockery/mockery: ~1.3.0
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ~7.0.0
- squizlabs/php_codesniffer: ^2.0
This package is not auto-updated.
Last update: 2025-03-31 22:34:07 UTC
README
Foodics OAuth 2.0 Client
Overview
To use this package, it will be necessary to have a Foodics client ID and client secret. These are referred to as {client-id}
and {client-secret}
in the documentation.
Installation
You can install the package via composer:
composer required shabeer/foodics-ouath2-merchant
Usage
Authorization Code Flow
<?php require_once './vendor/autoload.php'; use Foodics\OAuth2\Client\Provider\Foodics; $provider = new Foodics([ 'clientId' => '{client-id}', // The client ID assigned to you by Salla 'clientSecret' => '{client-secret}', // The client password assigned to you by Salla 'redirectUri' => 'https://yourservice.com/callback_url', // the url for current page in your service ]); if (!isset($_GET['code']) || empty($_GET['code'])) { // If we don't have an authorization code then get one $authUrl = $provider ->setBaseUrl('https://console.foodics.com') ->getAuthorizationUrl([ 'scope' => 'general.read', ]); header('Location: '.$authUrl); exit; } // Try to obtain an access token by utilizing the authorisations code grant. try { $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // // ## Access Token // // You should store the access token // which may use in authenticated requests against the Salla's API echo 'Access Token: '.$token->getToken()."<br>"; // // ## Refresh Token // // You should store the refresh token somewhere in your system because the access token expired after 14 days // so you can use the refresh token after that to generate a new access token without asking any access from the merchant // // $token = $provider->getAccessToken(new RefreshToken(), ['refresh_token' => $token->getRefreshToken()]); // echo 'Refresh Token: '.$token->getRefreshToken()."<br>"; // // ## Expire date // // This helps you to know when the access token will be expired // so before that date, you should generate a new access token using the refresh token echo 'Expire Date : '.$token->getExpires()."<br>"; /** @var \Foodics\OAuth2\Client\Provider\FoodicsUser $user */ $user = $provider->getResourceOwner($token); var_export($user->toArray()); } catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) { // Failed to get the access token or merchant details. // show a error message to the merchant with good UI exit($e->getMessage()); }
Refreshing a Token
Refresh tokens are only provided to applications that request offline access. You can specify offline access by passing the scope option in your getAuthorizationUrl() request.
use Foodics\OAuth2\Client\Provider\Foodics; $provider = new Foodics([ 'clientId' => '{client-id}', 'clientSecret' => '{client-secret}', ]); $refreshToken = 'FromYourStoredData'; $token = $provider->getAccessToken('refresh_token', ['refresh_token' => $refreshToken]); ## Contributing Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again! 1. Fork the Project 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 4. Push to the Branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request <p align="right">(<a href="#top">back to top</a>)</p>