- Автор темы
- #1
Раньше все добавлялось. После переноса сайта на https нужно было создать новое приложение. Внес параметры в конфиг и ничего не работает. Не могу понять, что в новом (v3) API изменилось по сравнению с v2.
js отправляет данные в php скрипт, там курлом формируется массив данных и отправляется яндексу. Но возвращается ошибка.
То, что передается в функцию getPage:
Что не так передаю?
Код (не мой
Что не так делаю?
js отправляет данные в php скрипт, там курлом формируется массив данных и отправляется яндексу. Но возвращается ошибка.
То, что передается в функцию getPage:
Код:
<pre>Array
(
[10002] => https://webmaster.yandex.net/v3/user/22342406/https:site.ru:443/original-texts/
[64] => 0
[78] => 30
[10023] => Array
(
[0] => POST https://webmaster.yandex.net/v3/user/22342406/https:site.ru:443/original-texts
/HTTPS/1.1
[1] => Host: webmaster.yandex.net
[2] => Authorization: OAuth AQFDSf3456ABUcJuAAPGSDGdgDq_3k8MreYd9pmV2lE
[3] => Content-Length: 4245
)
[19913] => 1
[10015] => <Data><content>закодированный текст</content></Data>
)
</pre>
Код (не мой
PHP:
# Функция отправки текста
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);
}