Статьи 1С-Битрикс

Решил задачу, рассказал об этом

Как получить доступ к данным Яндекс.Метрики через API

Как получить доступ к данным Яндекс.Метрики через API

При подключении к API Яндекс.Метрики почему-то возникают сложности, проблемы с токеном и другие. В интернете ничего внятного найти нельзя, но я решил все проблемы которые у меня возникли и решил написать свою статью. Надеюсь она появится в поисковике, и вы её найдете и решите свои проблемы.

Как работать по Апи с Яндекс метрикой

1. Нужно создать приложение и получить ClientID

Для этого нужно перейти по ссылке https://oauth.yandex.ru/client/new и заполнить необходимые поля

название — произвольное;
иконка сервиса — необязательно;
платформы приложения — веб-сервисы;
redirect URI — https://oauth.yandex.ru/verification_code;
доступ к данным — укажите необходимый набор доступов указанный ниже:

metrika:read — получение статистики, чтение параметров своих и доверенных счетчиков, получение списка счетчиков;
metrika:write — создание счетчиков, изменение параметров своих и доверенных счетчиков, загрузка любых данных;
metrika:expenses — загрузка в счетчики расходов;
metrika:user_params — загрузка в счетчики параметров пользователей;
metrika:offline_data — загрузка в счетчики офлайн-данных (данные из CRM, офлайн-конверсии, звонки).

В конце необходимо нажать на кнопку Создать приложение и скопировать его ClientID

2. Нужно получить OAuth-токен для авторизации

Вот тут-то, при подключении к API Яндекс.Метрики, и возникает в большинстве случав ошибка access_denied (403) Рассказываю по порядку. Необходимо добавить скопированный ClientID из первого пункта в конец ссылки https://oauth.yandex.ru/authorize?response_type=token&client_id=ClientID и перейти по ней получив заветный OAuth-токен. Но переходить нужно под авторизованным в яндексе аккаунтом, которому дано разрешение на Редактирование в настройках Яндекс Метрики. Тогда ошибка access_denied появляться не будет

3. Нужно передавать OAuth-токен в пост запросе

Теперь нужно составить пост запрос на PHP для взаимодействия по API c Яндекс метрикой. OAuth-токен нужно передавить вместе со всеми заголовками в формате Authorization: OAuth [токен] по инструкции яндекса. Если токен не предавать будет возникать ошибка unauthorized (401). Проследите за тем чтобы токен был указан верно, если потеряется какой-то символ прилетит ошибка invalid_token (403) Вообщем составляем запрос при помощи Curl. Библиотека должна быть подключена на вашем сервере.

$jsonRequests = json_encode($arFields);

$curl = curl_init();  
curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonRequests);
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($jsonRequests), 'Authorization: OAuth y0_AgAAAAAefw4143fwfwM-7dNIRVJLK1244243442Bi2Jb23423h7ewqfNHCDA')); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); 
$result = curl_exec($curl);  
curl_close($curl);
	
$json = json_decode ($result);

4. Получение ответа и обработка

В ответ мы получаем данные в формате json. Мы их обрабатываем в соответствии с наше задачей.

Возврат к списку