amocrm/oauth2-amocrm

amoCRM OAuth 2.0 客户端提供程序,用于 PHP League OAuth2-Client

2.0.8 2021-01-13 22:59 UTC

This package is auto-updated.

Last update: 2024-09-20 17:08:32 UTC


README

本包提供了amoCRM对PHP League OAuth 2.0 Client库的OAuth 2.0协议支持。OAuth 2.0 Client.

安装

可以使用composer安装

composer require amocrm/oauth2-amocrm

使用

使用方式与The League的OAuth客户端相同,使用AmoCRM\OAuth2\Client\Provider\AmoCRM作为提供程序。

处理授权码(Authorization Code)

$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());
}

更新访问令牌

$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 повторяем исходный запрос

网站按钮

为了方便,可以将按钮放置在网站上以简化集成安装。

<div class="button"></div>
<script 
    class="amocrm_oauth"
    charset="utf-8"
    data-client-id="xxxxxx-client-id-xxxxxx"
    data-title="Добавить в amoCRM"
    data-compact="false"
    data-class-name="className"
    data-color="red"
    data-state="random string"
    src="https://www.amocrm.ru/auth/button.js"
></script>

示例

在此存储库中包含一个名为 example.php 的文件,该文件实现了最简单的授权逻辑、保存令牌以及进行请求。要使用,需要在文件中创建提供程序时指定正确的值,以及指向您服务器上此文件调用的重定向URI。然后,可以访问example.php页面进行测试,之后将显示一个按钮以打开amoCRM应用程序的授权模态窗口。获取权限后,您将在屏幕上看到用户名。如果添加GET参数 - request=1,则将使用先前保存的令牌进行账户信息请求。