Skip to content

Commit

Permalink
codestyle update
Browse files Browse the repository at this point in the history
  • Loading branch information
bessudnov committed Sep 18, 2019
1 parent 4642cd2 commit 45c976b
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 78 deletions.
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,21 @@ if (time() >= $token['expires']) {
Для удобства можно разместить кнопку на сайт для простой установки созданной интеграции.
```
<div class="button"></div>
<script>var AMOCRM_OAUTH = { client_id: "xxxxxx-client-id-xxxxxx", title: "Добавить в amoCRM" };</script>
<script id="amocrm_oauth" charset="utf-8" src="https://amocrm.ru/auth/button.js"></script>
<script
id="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"
src="https://www.amocrm.ru/auth/button.js"
></script>
```

### Пример
В рамках данного репозитория имеется файл **example.php**, который рееализует простейшую логику авторизации, сохранения токена, а также совеершения запросов.
Для использования нужно указать корректные значения при создании провайдера. Дальше для теста можно переейти на страницу example.php, после чего будет редирект в приложение amoCRM для авторизации.
В рамках данного репозитория имеется файл **example.php**, который реализует простейшую логику авторизации, сохранения токена, а также совершения запросов.
Для использования нужно указать корректные значения при создании провайдера в файле, а также Redirect URI в интеграции ведущий на вызов этого файла на вашем сервере.
Дальше для теста можно перейти на страницу example.php, после чего будет редирект в приложение amoCRM для авторизации.
После получения доступов вы увидете имя пользователя на экране.
Если добавить GET параметр - request=1, то будет совершен запрос за информацией об аккаунте с сохраненным ранее токеном.
138 changes: 70 additions & 68 deletions example.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,26 +21,26 @@
}

if (!isset($_GET['request'])) {
if (!isset($_GET['code'])) {
/**
* Получаем ссылку для авторизации и дальше редиректим
*/
$authorizationUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();
header('Location: ' . $authorizationUrl);
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
unset($_SESSION['oauth2state']);
exit('Invalid state');
}

/**
* Ловим обратный код
*/
try {
/** @var \League\OAuth2\Client\Token\AccessToken $access_token */
$accessToken = $provider->getAccessToken(new League\OAuth2\Client\Grant\AuthorizationCode(), [
'code' => $_GET['code'],
]);
if (!isset($_GET['code'])) {
/**
* Получаем ссылку для авторизации и дальше редиректим
*/
$authorizationUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();
header('Location: ' . $authorizationUrl);
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
unset($_SESSION['oauth2state']);
exit('Invalid state');
}

/**
* Ловим обратный код
*/
try {
/** @var \League\OAuth2\Client\Token\AccessToken $access_token */
$accessToken = $provider->getAccessToken(new League\OAuth2\Client\Grant\AuthorizationCode(), [
'code' => $_GET['code'],
]);

if (!$accessToken->hasExpired()) {
saveToken([
Expand All @@ -50,46 +50,46 @@
'baseDomain' => $provider->getBaseDomain(),
]);
}
} catch (Exception $e) {
die((string)$e);
}
} catch (Exception $e) {
die((string)$e);
}

/** @var \AmoCRM\OAuth2\Client\Provider\AmoCRMResourceOwner $ownerDetails */
/** @var \AmoCRM\OAuth2\Client\Provider\AmoCRMResourceOwner $ownerDetails */
$ownerDetails = $provider->getResourceOwner($accessToken);

printf('Hello, %s!', $ownerDetails->getName());
} else {
$accessToken = getToken();

$provider->setBaseDomain($accessToken->getValues()['baseDomain']);

/**
* Проверяем активен ли токен и делаем запрос или обновляем токен
*/
if ($accessToken->hasExpired()) {
/**
* Получаем токен по рефрешу
*/
try {
$accessToken = $provider->getAccessToken(new League\OAuth2\Client\Grant\RefreshToken(), [
'refresh_token' => $accessToken->getRefreshToken(),
]);

saveToken([
$accessToken = getToken();

$provider->setBaseDomain($accessToken->getValues()['baseDomain']);

/**
* Проверяем активен ли токен и делаем запрос или обновляем токен
*/
if ($accessToken->hasExpired()) {
/**
* Получаем токен по рефрешу
*/
try {
$accessToken = $provider->getAccessToken(new League\OAuth2\Client\Grant\RefreshToken(), [
'refresh_token' => $accessToken->getRefreshToken(),
]);

saveToken([
'accessToken' => $accessToken->getToken(),
'refreshToken' => $accessToken->getRefreshToken(),
'expires' => $accessToken->getExpires(),
'baseDomain' => $provider->getBaseDomain(),
]);

} catch (Exception $e) {
die((string)$e);
}
}
} catch (Exception $e) {
die((string)$e);
}
}

$token = $accessToken->getToken();
$token = $accessToken->getToken();

try {
try {
/**
* Делаем запрос к АПИ
*/
Expand All @@ -100,38 +100,40 @@

$parsedBody = json_decode($data->getBody()->getContents(), true);
printf('ID аккаунта - %s, название - %s', $parsedBody['id'], $parsedBody['name']);
} catch (GuzzleHttp\Exception\GuzzleException $e) {
var_dump((string)$e);
}
} catch (GuzzleHttp\Exception\GuzzleException $e) {
var_dump((string)$e);
}
}


function saveToken($accessToken) {
if (
isset($accessToken)
function saveToken($accessToken)
{
if (
isset($accessToken)
&& isset($accessToken['accessToken'])
&& isset($accessToken['refreshToken'])
&& isset($accessToken['expires'])
&& isset($accessToken['baseDomain'])
) {
$data = [
'accessToken' => $accessToken['accessToken'],
'expires' => $accessToken['expires'],
'refreshToken' => $accessToken['refreshToken'],
) {
$data = [
'accessToken' => $accessToken['accessToken'],
'expires' => $accessToken['expires'],
'refreshToken' => $accessToken['refreshToken'],
'baseDomain' => $accessToken['baseDomain'],
];
];

file_put_contents(TOKEN_FILE, json_encode($data));
} else {
exit('Invalid access token ' . var_export($accessToken, true));
}
file_put_contents(TOKEN_FILE, json_encode($data));
} else {
exit('Invalid access token ' . var_export($accessToken, true));
}
}

/**
* @return \League\OAuth2\Client\Token\AccessToken
*/
function getToken() {
$accessToken = json_decode(file_get_contents(TOKEN_FILE), true);
function getToken()
{
$accessToken = json_decode(file_get_contents(TOKEN_FILE), true);

if (
isset($accessToken)
Expand All @@ -146,7 +148,7 @@ function getToken() {
'expires' => $accessToken['expires'],
'baseDomain' => $accessToken['baseDomain'],
]);
} else {
exit('Invalid access token ' . var_export($accessToken, true));
}
} else {
exit('Invalid access token ' . var_export($accessToken, true));
}
}
13 changes: 8 additions & 5 deletions src/AmoCRM.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

namespace AmoCRM\OAuth2\Client\Provider;

use League\OAuth2\Client\Provider\AbstractProvider;
Expand Down Expand Up @@ -53,14 +54,16 @@ public function __construct($options = [])
/**
* @param string $domain
*/
public function setBaseDomain($domain) {
public function setBaseDomain($domain)
{
$this->baseDomain = $domain;
}

/**
* @return string
*/
public function getBaseDomain() {
public function getBaseDomain()
{
return $this->baseDomain;
}

Expand Down Expand Up @@ -98,9 +101,9 @@ protected function getDefaultScopes()


public function urlAccount()
{
return $this->protocol . $this->baseDomain . '/';
}
{
return $this->protocol . $this->baseDomain . '/';
}

/**
* Generate a user object from a successful user details request.
Expand Down
3 changes: 2 additions & 1 deletion src/AmoCRMResourceOwner.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

namespace AmoCRM\OAuth2\Client\Provider;

use League\OAuth2\Client\Provider\ResourceOwnerInterface;
Expand All @@ -18,7 +19,7 @@ class AmoCRMResourceOwner implements ResourceOwnerInterface
/**
* Creates new resource owner.
*
* @param array $response
* @param array $response
*/
public function __construct(array $response = [])
{
Expand Down

0 comments on commit 45c976b

Please sign in to comment.