Проблемы с 403 ошибкой.
Необходимо внести правки в старый код добавления. Раньше работало. Теперь у них 3-я версия api, id сайта указывается уже не id, а http:site.ru:80. Если просто заменяю на такой способ, не работает. Добавляю в строку POST-запроса id юзера, все равно не работает.
# Функция отправки текста
function sendTextToYandex($text) {
$url = "/v3/user/".USER_ID."/" . WEBSITE_ID . "/original-texts/";
$text = urlencode($text);
$text = "<Data><content>{$text}</content></Data>";
$additionalHeaders = array('Content-Length: ' . strlen($text));
$curlOptions = array(CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_POSTFIELDS => $text);
$response = performYandexWebmasterApiRequest($url, 'POST', $curlOptions, $additionalHeaders);
return $response;
}
# Функция непосредственной подготовки на выполнения запроса добавления уникального текста
function performYandexWebmasterApiRequest($url, $requestType = 'GET', $curlOptions = array(), $additionalHeaders = array()) {
$headers = array(
"{$requestType} https://" . YANDEX_WEBMASTER_HOST . $url ."HTTPS/1.1",
'Host: webmaster.yandex.net',
'Authorization: OAuth '.YANDEX_TOKEN
//https://api.webmaster.yandex.net/v3/user/{user-id}/hosts/{host-id}/original-texts/
);
$headers = array_merge($headers, $additionalHeaders);
$requestOptions = array(
CURLOPT_URL => 'https://' . YANDEX_WEBMASTER_HOST . $url,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_CONNECTTIMEOUT => YANDEX_API_REQUEST_TIMEOUT,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => 1
);
if (count($curlOptions)) {
foreach ($curlOptions as $curlOption => $curlOptionValue) {
$requestOptions[$curlOption] = $curlOptionValue;
}
}
$response = getPage($requestOptions);
return $response;
}
# Функция для курления
function getPage($curlOptions = array()) {
$ch = curl_init();
curl_setopt_array($ch, $curlOptions);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
return array('result' => $result, 'info' => $info);
Массив данных, который передается в getPage: