Авторизация приложения bitrix24 с помощью OAuth

← разместить еще код

Авторизация приложения bitrix24 с помощью OAuth. Регистрируем приложение в партнерском кабинете, создаем версию приложения, указываем права, путь к адресу вашего сервиса с приложением, устанавливаем приложение. Для использования методов rest api облачного bitrix24 вам необходимо авторизоваться по протоколу oauth. В первую очередь необходимо запросить code с помощью первого запроса, указав client_id и redirect_uri, далее во втором запросе указываем полученный code, scope-права, client_secret, redirect_uri, grant_type, client_id. Все необходимые поля можно получить в натсройках приложения и в возвращаемых данных. Далее уже программно запрашиваем refresh_token с помощью file_get_contents. Функция возвратит json-ответ с access_token. Полученный токен мы добавляем в запросы типа $domain."/rest/crm.product.list.json?auth=".$new_token.

Расшаренный код:

<?
/* в адресную строку */
// https://my.bitrix24.ru/oauth/authorize/?client_id=clidxxx&response_type=code&redirect_uri=https%3A%2F%2Fsite.ru%3Aindex.php

/* в адресную строку */
// https://my.bitrix24.ru/oauth/token/?client_id=clidxxx&grant_type=authorization_code&client_secret=clsecretxxx&redirect_uri=https%3A%2F%2Fsite.ru%3Aindex.php&code=xxx&scope=crm,sonet_group

// /* получаем токен каждый раз новый - уже программно с помощью file_get_contents - ниже по коду */
// https://my.bitrix24.ru/oauth/token/?client_id=clidxxx&grant_type=refresh_token&client_secret=clsecretxxx&redirect_uri=https%3A%2F%2Fsite.ru%3Aindex.php&refresh_token=xxx


/* добавляем параметры ссылкам при переходе внутри приложения */
// $addGetParam = 'DOMAIN='.$_GET['DOMAIN'].'&PROTOCOL='.$_GET['PROTOCOL'].'&LANG='.$_GET['LANG'].'&APP_SID='.$_GET['APP_SID'];

/* авторизация */
/* получаем новый аксес_токен с помощью refresh_token */
$ref = file_get_contents("https://my.bitrix24.ru/oauth/token/?client_id=clidxxx&grant_type=refresh_token&client_secret=clsecretxxx&redirect_uri=https%3A%2F%2Fsite.ru%3Aindex.php&refresh_token=xxx");
$ref = json_decode($ref);
$ref = (array)$ref;
$new_token = $ref['access_token'];
$domain = ($_REQUEST['PROTOCOL'] == 0 ? 'http' : 'https') . '://'.$_REQUEST['DOMAIN'];
/* ---- */

/* список товаров из облака */
$res = file_get_contents($domain."/rest/crm.product.list.json?auth=".$new_token);
$arCloudProducts = json_decode($res,true);
// vdump($arCloudProducts);