ВНИМАНИЕ!! Приведенный ниже код устарел, так как б24 обновил авторизацию. Но есть проект на github сделанный на основе моего кода. Работает с новой версией авторизации https://github.com/xUJYx/bitrix24_api_authorization
В документации bitrix24 api описано получение сессионного токена, но для тех кто первый раз создает приложение, получить его удается не сразу.
Данная заметка больше для себя, чтобы не забыть потом).
И так, поехали:
Для автоматизации данного процесса я написал небольшой скрипт :
<?php $config = require __DIR__.'/config.php'; $config = $config['production']; $_url = 'https://'.$config['domain']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $_url); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $res = curl_exec($ch); $l = ''; if(preg_match('#Location: (.*)#', $res, $r)) { $l = trim($r[1]); } //echo $l.PHP_EOL; curl_setopt($ch, CURLOPT_URL, $l); $res = curl_exec($ch); preg_match('#name="backurl" value="(.*)"#', $res, $math); $post = http_build_query([ 'AUTH_FORM' => 'Y', 'TYPE' => 'AUTH', 'backurl' => $math[1], 'USER_LOGIN' => $config['login'], 'USER_PASSWORD' => $config['password'], 'USER_REMEMBER' => 'Y' ]); curl_setopt($ch, CURLOPT_URL, 'https://www.bitrix24.net/auth/'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); $res = curl_exec($ch); $l = ''; if(preg_match('#Location: (.*)#', $res, $r)) { $l = trim($r[1]); } //echo $l.PHP_EOL; curl_setopt($ch, CURLOPT_URL, $l); $res = curl_exec($ch); $l = ''; if(preg_match('#Location: (.*)#', $res, $r)) { $l = trim($r[1]); } //echo $l.PHP_EOL; curl_setopt($ch, CURLOPT_URL, $l); $res = curl_exec($ch); //end autorize curl_setopt($ch, CURLOPT_URL, 'https://'.$config['domain'].'/oauth/authorize/?response_type=code&client_id='.$config['client_id']); $res = curl_exec($ch); $l = ''; if(preg_match('#Location: (.*)#', $res, $r)) { $l = trim($r[1]); } preg_match('/code=(.*)&do/', $l, $code); $code = $code[1]; curl_setopt($ch, CURLOPT_URL, 'https://'.$config['domain'].'/oauth/token/?grant_type=authorization_code&client_id='.$config['client_id'].'&client_secret='.$config['client_secret'].'&code='.$code.'&scope=crm,user,telephony'); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); echo $res;
Для его использования нужен конфигурационный файл:
<?php return [ 'dev' => [ //идентификатор приложения 'client_id' => 'local.55a6ca262e8482.19745138', //секретный код приложения 'client_secret' => '3c04629083254f498ec482d73b14deb9', 'scope' => 'crm,user,telephony', //домен третьего уровня клиентского проекта в Bitrix24 'domain' => 'test.bitrix24.ru', //данные пользователя bitrix24 'login' => 'test@test.tu', 'password' => '123456', ], 'production' => [ //идентификатор приложения 'client_id' => 'local.55acf267b7bbf0.23563438', //секретный код приложения 'client_secret' => '2d75c95a9857f8d8e8108d543281d5a2', //доступ 'scope' => 'crm,user', //домен третьего уровня клиентского проекта в Bitrix24 'domain' => 'test2.bitrix24.ru', //данные пользователя для авторизации 'login' => 'test@test.ru', 'password' => '123456', ], ];
Нужный массив указываем в файле авторизации
$config = $config['production'];
После запуска скрипт выдаст сессионный токен.
Комментарии