Добавление оригинального текста в вебмастер

Мммм, а где собственно опция что он должен POST слать ?
Код:
curl_setopt($ch, CURLOPT_POST, true);
 
Мммм, а где собственно опция что он должен POST слать ?
Код:
curl_setopt($ch, CURLOPT_POST, true);
Не помогло.
Я пробовал взять кусок кода из старого кода (не помню уже чего:(
PHP:
# Функция для курления
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);
    }
# Функция отправки текста
function sendTextToYandex($text) {
    $url = "/api/v2/hosts/" . WEBSITE_ID . "/original-texts/";
    // $url = "/v3/user/".USER_ID."/" . WEBSITE_ID . "/original-texts/";
    $text = urlencode($text);
    $text = "<original-text><content>{$text}</content></original-text>";
    $additionalHeaders = array('Content-Length: ' . strlen($text));
    $curlOptions = array(CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_POSTFIELDS => $text);
    $response = performYandexWebmasterApiRequest($url, 'POST', $curlOptions, $additionalHeaders);
    // pp($response);
    return $response;
    }
# Функция непосредственной подготовки на выполнения запроса добавления уникального текста
function performYandexWebmasterApiRequest($url, $requestType = 'GET', $curlOptions = array(), $additionalHeaders = array()) {
    $headers = array(
        "{$requestType} {$url} HTTPS/1.1",
        'Host: webmaster.yandex.ru',
        'Authorization: OAuth '.YANDEX_TOKEN
    );

    $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);
    // pp( $response );
    return $response;
    }
И менял url страницы на обычный сайт. Возвращалось мне значение 1. Класс яндекса никак не хочет возвращать ничего, только пустая страница. Я в curl не разбираюсь, только абстрактно понимаю. Поэтому не знаю, что такое результат "1". Что должно возвращаться в response при правильном результате? Пробовал сделать сохранение в файл, но не получилось.
Видимо, все таки проблемы в настройках curl.
 
Должен возвращаться контент отдаваемый сервером.
Вот я взял кусок кода из класса и чуток изменил для теста

Код:
<?php 
        $postData = array("grant_type" => "authorization_code", "code" => $code, "client_id" => $client_id, "client_secret" => $client_secret);
        // print_r($client_secret); die();
        $ch = curl_init('https://yandex.ru');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
        curl_setopt($ch, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
        $response = curl_exec($ch);
        echo $response;
        curl_close($ch);
И получаю главную страницу Яндекса, т.е. все норм.
Проверь у себя его.
 
Должен возвращаться контент отдаваемый сервером.
Вот я взял кусок кода из класса и чуток изменил для теста

Код:
<?php
        $postData = array("grant_type" => "authorization_code", "code" => $code, "client_id" => $client_id, "client_secret" => $client_secret);
        // print_r($client_secret); die();
        $ch = curl_init('https://yandex.ru');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
        curl_setopt($ch, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
        $response = curl_exec($ch);
        echo $response;
        curl_close($ch);
И получаю главную страницу Яндекса, т.е. все норм.
Проверь у себя его.
вот тут и начинается интересное, видимо... :)
не работает, все тоже самое
 
Сделай
Код:
<?php phpinfo(); ?>
и поищи в показанной странице curl, может его тупо нету?
у тебя вообще откуда скрипт запускается?
 
Сделай
Код:
<?php phpinfo(); ?>
и поищи в показанной странице curl, может его тупо нету?
у тебя вообще откуда скрипт запускается?
курл есть. Старая версия скрипта (на основе плагина для WP) работает. Работал, т.е., пока не отключили в яндексе api v2.
Скрипт запускается откуда? Т.е.? С денвера...
сделал test.ru/www/webmaster.api-master/example/index.php
Прикладываю phpinfo на всякий... вдруг чет нету в нем
 

Вложения

  • curl.jpg
    curl.jpg
    80,5 KB · Просмотры: 3
Подозреваю, что все таки с курлом что-то.
Вот что у меня показывай предыдущий листинг с яндексом
Для просмотра ссылки Войди или Зарегистрируйся
Попробуй OpenServer
 
Метод по получению токена пропустил, получил вручную и прописал его прямо в конфиг и в сессию, как делает метод. И поехало все дальше.
А после добавил в метод строки:
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
И что-то потихоньку, помаленьку, пришел к тому, что класс яндекса стал работать. Это подобие вебмастера у них, добавляется сайт, проходит верефикацию, после чего добавляются тексты.
Может быть с этими строками и метод получения токена тоже станет работать, т.к. другие методы с курлом также выдавали ошибки без этих строк, добавил строки - ошибки пропали и все срабатывало. Так шаг за шагом что-то сделал.
Теперь необходимо это все перелапатить как-то и сделать модуль для сайта. Как это сделать, вообще пока не врубаюсь... с этой auth 2.0.
Там в коде куча авторизаций, верификациий для пользователя, который будет добавлять оригинальный текст в вебмастер. Обойти не получилось, пришлось проходить верефикацию, путем заливки html файла на хостинг, чтобы яндекс проверил сайт. Без этого гадина, никуда не допускал. Раньше все работало в v2, никаких проблем... :confused:

Кстати... попробовал доработать метод getAccessToken этими строками, убрал метод POST из него (//curl_setopt($ch, CURLOPT_POST, 1);) и все заработало вроде как...

Почему без этих двух строк curl не хотел работать, ни в одном методе?
 
Последнее редактирование:
Это только когда сайт по https работает - проверка соответствия сертификата хосту.
Может курл так проверяет, что поддомен webmaster не видится, а вообще хз - я просто подумал что у яндекса уж точно все нормально должно быть.
 
Назад
Сверху