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