Авторизация
В API реферальной программы авторизация производится при помощи специального авторизационного ключа. При отправке запросов ключ нужно передавать в HTTP‑заголовке Authorization.
Получение ключа
-
Перейдите по ссылке и авторизуйтесь с тем Яндекс ID, для которого хотите получить ключ.
-
Сохраните полученный ключ — он понадобится для запросов в API.
О том, как отозвать ключ, читайте в Справке Яндекс ID.
Использование ключа
Авторизационный ключ необходимо передавать во всех запросах в HTTP‑заголовке Authorization. Если запрос отправлен без авторизационного ключа или с недействительным ключом, сервер реферальной программы возвращает HTTP‑статус 401 Authorization failed.
Пример запроса с HTTP‑заголовком Authorization на языке PHP:
// Входные данные
$authKey = 'OAuth <token>';
$requestURL = 'https://api.content.market.yandex.ru/v3/affiliate/search?geo_id=213&text=iphone';
// Установка HTTP-заголовков запроса
$headers = array("Authorization: $authKey");
// Инициализация c URL
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $requestURL);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
// Выполнение запроса, получение результата
$result = curl_exec($curl);
// Обработка результата выполнения запроса
if(!$result) {
echo 'Ошибка cURL: ' . curl_errno($curl) . ' - ' . curl_error($curl);
}
else {
// Разделение полученных HTTP-заголовков и тела ответа
$responseHeadersSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$responseHeaders = substr($result, 0, $responseHeadersSize);
$responseBody = substr($result, $responseHeadersSize);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($httpCode == 200) {
// Если HTTP-код ответа равен 200, то выводится отформатированное тело ответа
// в формате JSON
echo 'Запрос: ' . $requestURL;
$decodedBody = json_decode($responseBody);
echo '<br>Тело ответа: <pre>' . json_encode(
$decodedBody,
JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
) . '</pre>';
}
else {
echo 'HTTP-код ответа: ' . $httpCode;
// Если тело ответа не пустое, то производится попытка декодирования JSON-кода
if (!empty($responseBody)) {
$decodedBody = json_decode($responseBody);
if ($decodedBody != null) {
// Если ответ содержит тело в формате JSON,
// то выводится отформатированное тело в формате JSON
echo '<br>Тело ответа: <pre>' . json_encode(
$decodedBody,
JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
) . '</pre>';
}
else {
// Если не удалось декодировать JSON либо тело имеет другой формат,
// то выводится преобразованное тело ответа
echo '<br>Тело ответа: <pre>' . htmlspecialchars($responseBody) . "</pre>";
}
}
}
// Вывод необработанных HTTP-заголовков запроса и ответа
echo '<hr>Заголовки запроса: <pre>' . curl_getinfo($curl, CURLINFO_HEADER_OUT) . '</pre>';
echo 'Заголовки ответа: <pre>' . $responseHeaders . '</pre>';
}
curl_close($curl);
Работа с несколькими площадками
Полученный ключ можно использовать на любой площадке. Для этого в запросе укажите ее ID или сгенерированный для этой площадки CLID инструмента.