Публикация записей в группе на Одноклассниках
SeoLik

20 мая 2020, 21:59
1503

Размещение статей в группе весьма положительно сказывается на трафике сайта в целом. Так же, автоматический постинг статьи в группе на Одноклассниках экономит вам время. В данной статье мы расскажем, и главное покажем, как реализовать данную идею на php.

Для начала нам нужно создать приложение в одноклассниках.


Для добавления приложения на сайт Одноклассники необходимо:

  1. Зарегистрироваться на портале Одноклассники и привязать к своему аккаунту email – на этот email будут приходить письма, содержащие регистрационные данные приложений.
  2. Получить права разработчика по ссылке https://ok.ru/devaccess.

Создание нового приложения

Чтобы создать новое приложение перейдите по этой ссылке. Далее нажимаем на "Подключить oAuth" и заполняем поля формы.

создание приложения ok api

 

После заполнения формы, нажимаем на кнопку Сохранить. Наше приложение создано!

 

Проверяем почту и видим там письмо от Одноклассников, в котором:

Чтобы наше приложение могло работать, ему должны выдать права GROUP_CONTENT. Подробнее о правах приложения на OK API.

На почту api-support@ok.ru пишем письмо, с просьбой о выдачи приложению этих прав, с описанием того, зачем вам эти права.

 

Желательно написать с адреса вида admin@site.ru с примерным текстом:

Здравствуйте!

ID приложения: XXXXXXXXXXXXX

Нужны права GROUP_CONTENT которые позволят осуществлять постинг в группу в одноклассниках.

Это нужно нам для того чтобы реализовать постинг статей при публикации на нашем блоге https://seolik.ru/blog в нашу группу https://ok.ru/group/52007885209774

Заранее благодарны!

И только после выдачи этих прав доступа, наше приложение будет полностью готовым.

Обращаем ваше внимание, что нам отвечали ответным письмом, о том что права выданы. Но может быть так, что ответного письма не будет но права вам выдадут, это вы сможете посмотреть в настройках самого приложения.

настройка приложения ok api

И так, права нам выданы. Теперь переходим в наши приложения, находим наше созданное приложение, наводим на него мышкой и в появившесмся меню выбираем Настройки

И в самом низу страницы нажимаем на кнопку Получить access_token

Копируем наш вечный токен

Переходим к написанию php кода:

function Post_Url($url, $params=array(), $timeout=15) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode(http_build_query($params)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
 
function arInStr($array) {
    ksort($array);
    $string = "";
    foreach($array as $key=>$val) {
        if (is_array($val)) {
            $string .= $key."=".arInStr($val);
        } else {
            $string .= $key."=".$val;
        }
    }
    return $string;
}

$ok_access_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";//Наш вечный токен
$ok_private_key = "xxxxxxxxxxxxxxxxxxxxxxxx";//Секретный ключ приложения
$ok_public_key = "xxxxxxxxxxxxxxxxxxxxxx";//Публичный ключ приложения
$params = array(
    "application_key"=>$ok_public_key,
    "method"=>"mediatopic.post",
    "gid"=>"52007885209774",//ID нашей группы
    "type"=>"GROUP_THEME",
    "attachment"=>'{"media": [{"type": "link","url": "https://seolik.ru"}]}',
    "format"=>"json"
);
$sig = md5(arInStr($params).md5("{$ok_access_token}{$ok_private_key}"));
$params["access_token"]=$ok_access_token;
$params["sig"]=$sig;
$result = json_decode(Post_Url("https://api.ok.ru/fb.do", $params), true);

//print_r($result); при успешном выполнении в ответе будет id поста
	
// список возможных ошибок https://apiok.ru/dev/errors	
	
//Если парсер Одноклассников не смог открыть вашу ссылку, то повторяем запрос ещё раз
if (isset($result['error_code']) && $result['error_code'] == 5000) {
Post_Url("https://api.ok.ru/fb.do", $params);
}