[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавление оригинальных текстов в вебмастер.яндекс
remenikomer
Js передает в php файл текст статьи, а скрипт уже через курл передает в api яндекса.
Проблемы с 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:
Цитата
<pre>Array
(
    [10002] => https://webmaster.yandex.net/v3/user/223424...original-texts/

    [64] => 0
    [78] => 30
    [10023] => Array
        (
            [0] => POST https://webmaster.yandex.net/v3/user/223424.../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>

Подскажите, пожалуйста, что не так?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.