# amoCRM Provider для OAuth 2.0 Client В данном пакете представлена поддержка протокола OAuth 2.0 в amoCRM для библитеки PHP League [OAuth 2.0 Client](https://github.com/thephpleague/oauth2-client). ## Установка Установить можно с помощью composer: ``` composer require amocrm/oauth2-amocrm ``` ## Использование Использование идентично использованию The League's OAuth client, используя `AmoCRM\OAuth2\Client\Provider\AmoCRM` в качестве провайдера. ### Обработка кода авторизации (Authorization Code) ```php $provider = new AmoCRM([ 'clientId' => 'YOUR_CLIENT_ID', 'clientSecret' => 'YOUR_CLIENT_SECRET', 'redirectUri' => 'http://your-redirect-uri', ]); if (isset($_GET['code']) && $_GET['code']) { //Вызов функции setBaseDomain требуется для установки контектс аккаунта. if (isset($_GET['referer'])) { $provider->setBaseDomain($_GET['referer']); } $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); //todo сохраняем access, refresh токены и привязку к аккаунту и возможно пользователю /** @var \AmoCRM\OAuth2\Client\Provider\AmoCRMResourceOwner $ownerDetails */ $ownerDetails = $provider->getResourceOwner($token); printf('Hello, %s!', $ownerDetails->getName()); } ``` ### Обновление access токена ```php $provider = new AmoCRM([ 'clientId' => 'YOUR_CLIENT_ID', 'clientSecret' => 'YOUR_CLIENT_SECRET', 'redirectUri' => 'http://your-redirect-uri', ]); //todo получение токена из хранилища $provider->setBaseDomain($token['baseDomain']); /** * Проверяем активен ли токен и делаем запрос или обновляем токен */ if (time() >= $token['expires']) { /** * Получаем токен по рефрешу */ try { $accessToken = $provider->getAccessToken(new League\OAuth2\Client\Grant\RefreshToken(), [ 'refresh_token' => $token['refreshToken'], ]); //todo сохраняем новые access, refresh токены и привязку к аккаунту и возможно пользователю } catch (Exception $e) { die((string)$e); } } //todo повторяем исходный запрос ``` ### Кнопка на сайт ### Для удобства можно разместить кнопку на сайт для простой установки созданной интеграции. ```
``` ### Пример В рамках данного репозитория имеется файл **example.php**, который реализует простейшую логику авторизации, сохранения токена, а также совершения запросов. Для использования нужно указать корректные значения при создании провайдера в файле, а также Redirect URI в интеграции ведущий на вызов этого файла на вашем сервере. Дальше для теста можно перейти на страницу example.php, после чего будет отображена кнопка для открытия модального окна автооризации приложения в amoCRM. После получения доступов вы увидете имя пользователя на экране. Если добавить GET параметр - request=1, то будет совершен запрос за информацией об аккаунте с сохраненным ранее токеном.