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);
}