Не прикрепляется картинка к посту в группу, в то время как этот же код прикрепляет картинку к посту на стену пользователя. Что не так делаю?
Так же пробовал вместо $nam использовать owner_id (в некоторых примерах используют, хотя в доках апи контакта - такого нет) в группе не работает у пользователя - работает.
$group_id='-153622138'; //id сообщества
// $group_id='10085174';//id юзера
// почему то без этой хрени не работает, сокорее всего из-за версии php. Этот костыль нашел, когда ругалось на curl_file_create
if (!function_exists('curl_file_create')) {
function curl_file_create($filename, $mimetype = '', $postname = '') {
return "@$filename;filename="
. ($postname ?: basename($filename))
. ($mimetype ? ";type=$mimetype" : '');
}
}
$text = 'ТЕСТ';
$image_name = 'test.jpg';
$image = __DIR__ . DIRECTORY_SEPARATOR . $image_name;
if ($group_id<0) {
$nam='group_id';
} else {
$nam='user_id';
}
$val=abs($group_id);
$upload_url = vkAPI('photos.getWallUploadServer', [$nam => $val])->response->upload_url;
try {
$ch = curl_init($upload_url);
$cfile = curl_file_create($image, mime_content_type($image), $image_name);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['photo' => $cfile]);
$responseUpload = json_decode(curl_exec($ch));
curl_close($ch);
echo 'Картинка успешно загружена<br>';
} catch (Exception $e) {
exit('Неизвестная ошибка при попытке загрузки картинки '.$e);
}
$responseSave = vkAPI('photos.saveWallPhoto', [
$nam => $val,
'photo' => stripslashes($responseUpload->photo),
'server' => $responseUpload->server,
'hash' => $responseUpload->hash,
]);
if ($responseSave->error) {
var_dump($responseSave);
exit('Неизвестная ошибка при попытке сохранения картинки ');
} else {
echo 'Картинка успешно сохранена<br>';
}
echo 'photo'.$group_id.'_'.$responseSave->response[0]->id;
$responsePost = vkAPI('wall.post', [
'owner_id' => $group_id,
'message' => $text,
'attachments' => 'photo'.$group_id.'_'.$responseSave->response[0]->id,
'hash' => $responseSave->response[0]->hash,
]);
if ($responsePost->error) {
if ($responsePost->error->error_code == 214) {
exit('Стена закрыта для постинга');
} else {
var_dump($responsePost->error);
exit('Неизвестная ошибка при попытке постинга');
}
} else {
echo 'Пост успешно добавлен';
}
function vkAPI($method, array $data = [])
{
global $config;
$params = [];
foreach ($data as $name => $val) {
$params[$name] = $val;
$params['access_token'] = $config->vk_token;
$params['v'] = $config->vk_version;
}
$json = file_get_contents('https://api.vk.com/method/' . $method . '?' . http_build_query($params));
return json_decode($json);
}