Размещение статей в группе весьма положительно сказывается на трафике сайта в целом. Так же, автоматический постинг статьи в группе на Одноклассниках экономит вам время. В данной статье мы расскажем, и главное покажем, как реализовать данную идею на php.
Для начала нам нужно создать приложение в одноклассниках.
Для добавления приложения на сайт Одноклассники необходимо:
Чтобы создать новое приложение перейдите по этой ссылке. Далее нажимаем на "Подключить oAuth" и заполняем поля формы.
После заполнения формы, нажимаем на кнопку Сохранить. Наше приложение создано!
Проверяем почту и видим там письмо от Одноклассников, в котором:
Чтобы наше приложение могло работать, ему должны выдать права GROUP_CONTENT. Подробнее о правах приложения на OK API.
На почту api-support@ok.ru пишем письмо, с просьбой о выдачи приложению этих прав, с описанием того, зачем вам эти права.
Желательно написать с адреса вида admin@site.ru с примерным текстом:
Здравствуйте!
ID приложения: XXXXXXXXXXXXX
Нужны права GROUP_CONTENT которые позволят осуществлять постинг в группу в одноклассниках.
Это нужно нам для того чтобы реализовать постинг статей при публикации на нашем блоге https://seolik.ru/blog в нашу группу https://ok.ru/group/52007885209774
Заранее благодарны!
И только после выдачи этих прав доступа, наше приложение будет полностью готовым.
Обращаем ваше внимание, что нам отвечали ответным письмом, о том что права выданы. Но может быть так, что ответного письма не будет но права вам выдадут, это вы сможете посмотреть в настройках самого приложения.
И так, права нам выданы. Теперь переходим в наши приложения, находим наше созданное приложение, наводим на него мышкой и в появившесмся меню выбираем Настройки
И в самом низу страницы нажимаем на кнопку Получить 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);
}