API вконтакте - постинг на стену в группу не работает публикация фото

12
U
На сайте с 02.12.2013
Offline
14
6130

Автопостинг Вконтакте не публикует фотографию. Публикуется только текст: https://vk.com/public104107219

Перерыл 15 примеров - все перепробовал. Не могу понять с чем эта проблема может быть связанна, и как ее решить.

Помогите.

Код:

////////////////////////////////////////////////////////////////

class vk {
private $token;
private $app_id;
private $group_id;
private $delta;
public function __construct( $token, $delta = 5, $app_id = '[ID - приложения]', $group_id = '[ID - группы]' ) {
$this->token = $token;
$this->delta = $delta;
$this->app_id = $app_id;
$this->group_id = $group_id;
}

public function post($desc, $photo, $link){
if(rand(0, 99) < $this->delta ) {
$data = json_decode(
$this->execute(
'wall.post',
array(
'owner_id' => -$this->group_id,
'from_group' => 1,
'message' => $desc,
'attachments' => 'photo-' . $this->group_id . '_' . $photo . ',' . $link
)
)
);

if( isset( $data->error ) ) {
return $this->error( $data );
}
return $data->response->post_id;
}
return 0;
}

public function create_album( $name, $desc ) {
$data = json_decode(
$this->execute(
'photos.createAlbum',
array(
'title' => $name,
'gid' => $this->group_id,
'description' => $desc,
'comment_privacy' => 1,
'privacy' => 1
)
)
);

if( isset( $data->error ) ) {
return $this->error( $data );
}
return $data->response->aid;
}

public function get_album_size( $id ) {
$data = json_decode(
$this->execute(
'photos.getAlbums',
array(
'oid' => -$this->group_id,
'aids' => $id
)
)
);

if( isset( $data->error ) ) {
return $this->error( $data );
}
return $data->response['0']->size;
}

public function upload_photo( $file, $album_id, $desc ) {
if( !is_file( $file ) ) return false;
$data = json_decode(
$this->execute(
'photos.getUploadServer',
array(
'aid' => $album_id,
'gid' => $this->group_id,
'save_big' => 1
)
)
);

if( isset( $data->error ) ) {
return $this->error( $data );
}

$err['photos.getUploadServer'] = $data;
$ch = curl_init( $data->response->upload_url );
curl_setopt ( $ch, CURLOPT_HEADER, false );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, array( 'file1' => '@' .$file ) );

$data = curl_exec($ch);
curl_close($ch);
$data = json_decode( $data );
if( isset( $data->error ) ) {
return $this->error( $data );
}

$err['UploadPhoto'] = $data;
$data = json_decode(
$this->execute(
'photos.save',
array(
'aid' => $album_id,
'gid' => $this->group_id,
'server' => $data->server,
'photos_list' => $data->photos_list,
'hash' => $data->hash,
'caption' => $desc
)
)
);

if(isset($data->error)){
$err['photos.save'] = $data;
return $this->error($err);
}
return $data->response['0']->pid;
}

private function execute($method, $params){
$ch = curl_init( 'https://api.vk.com/method/' . $method . '?access_token=' . $this->token );
curl_setopt ( $ch, CURLOPT_HEADER, false );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $params );
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

private function error($data){
var_dump($data);
return false;
}
}


/////////////////////////////////////////////////////////
$token = '[Полученный токен]';
$delta = '100';
$app_id = '[ID - приложения]';
$group_id = '[ID - группы]';
$vk = new vk( $token, $delta, $app_id, $group_id );
//Допустим альбом уже создан, проверим не переполнен ли он
$vk_album = '222306804';
if( $vk->get_album_size( $vk_album ) > 400 ) {
//если переполнен, более 400 фоток
//то создаём новый
$vk_album = $vk->create_album( '{{название альбома}}', '{{описание альбома}}' );
}

$img = 'http://cs421823.vk.me/v421823588/1733/wHHwNr46f_4.jpg';
//загружаем фотографию
$vk_photo = $vk->upload_photo($img, $vk_album, '{{описание фотки}}' );
//пишем пост на стену
$vk_post = $vk->post('Пост 1', $vk_photo, 'google.com' );
////////////////////////////////////////////////////////////////
TF-Studio
На сайте с 17.08.2010
Offline
334
#1
Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
U
На сайте с 02.12.2013
Offline
14
#2

TF-Studio, спасибо!

В понедельник проверю!

TF-Studio
На сайте с 17.08.2010
Offline
334
#3

а что проверят.
я так кучу групп веду.

читай доки - там всё есть.

у ВК шикарная документация.

в сети навалом классов и примеров.

U
На сайте с 02.12.2013
Offline
14
#4
TF-Studio:
а что проверят.
я так кучу групп веду.
читай доки - там всё есть.
у ВК шикарная документация.
в сети навалом классов и примеров.

Вот поставил класс и куча ошибок

Warning: scandir(/var/www/uj/data/www/eb100.rusome_dir/): failed to open dir: No such

---------- Добавлено 13.10.2015 в 16:18 ----------

Сообщение пишет а фотографию не отправляет!

дани мапов
На сайте с 06.09.2012
Offline
204
#5

Кстати, сталкивался с этим, когда давно делал постинг с картинкой. Кажется, там ограничение по разрешению картинки было, из-за этого сначала не работало.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
U
На сайте с 02.12.2013
Offline
14
#6

Мне нужно отправлять одну фотографию

---------- Добавлено 13.10.2015 в 16:25 ----------

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

$app ['group_owner'] = 222306804; - это ID фаотоальбома

$app ['group_id'] = 104163394; - это ID группы

Верно?

---------- Добавлено 13.10.2015 в 16:29 ----------

$app ['group_owner'] = ***********; - это мой ID вконтакте?

И так тоже не работает!

---------- Добавлено 13.10.2015 в 16:49 ----------

Кто может дать рабочий скрипт постинга с картинками?

S1
На сайте с 28.03.2010
Offline
72
#7
ujobru:
Вот поставил класс и куча ошибок

Warning: scandir(/var/www/uj/data/www/eb100.rusome_dir/): failed to open dir: No such

---------- Добавлено 13.10.2015 в 16:18 ----------

Сообщение пишет а фотографию не отправляет!

А пробовали забить эту ошибку в гугл? Думаю ответ найдете сразу.

ujobru:
Мне нужно отправлять одну фотографию

---------- Добавлено 13.10.2015 в 16:25 ----------

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

$app ['group_owner'] = 222306804; - это ID фаотоальбома
$app ['group_id'] = 104163394; - это ID группы

Верно?

---------- Добавлено 13.10.2015 в 16:29 ----------

$app ['group_owner'] = ***********; - это мой ID вконтакте?
И так тоже не работает!

---------- Добавлено 13.10.2015 в 16:49 ----------

Кто может дать рабочий скрипт постинга с картинками?

Какую ошибку выводит?

ICQ: 3533966 | Skype: spider13software | E-Mail: admin@spider13.net | Telegram: spider13software| Разработчик Node.js (https://spider13.net/) | Заметки онлайн (https://notes.spider13.net/)
U
На сайте с 02.12.2013
Offline
14
#8
spider13:
А пробовали забить эту ошибку в гугл? Думаю ответ найдете сразу.
Какую ошибку выводит?

Вот такие ошибки выдает!


Notice: Undefined index: response in /var/www/users/data/www/site.ru/vkclass.php on line 64
Notice: Trying to get property of non-object in /var/www/users/data/www/site.ru/vkclass.php on line 70
Notice: Trying to get property of non-object in /var/www/users/data/www/site.ru/vkclass.php on line 71
Notice: Trying to get property of non-object in /var/www/users/data/www/site.ru/vkclass.php on line 72
Notice: Undefined index: response in /var/www/users/data/www/site.ru/vkclass.php on line 80


---------- Добавлено 13.10.2015 в 17:03 ----------

Это не ошибки, а предупреждения.

Но почему картинку не грузит?

---------- Добавлено 13.10.2015 в 17:05 ----------

68 строка $data = $vk->api('photos.saveWallPhoto', array(

69 строка 'group_id' => $app ['group_id'],

70 строка 'photo' => $d_load->photo,

71 строка 'server' => $d_load->server,

72 строка 'hash' => $d_load->hash

73 строка ));

S1
На сайте с 28.03.2010
Offline
72
#9

Ну если это не ошибки php, значит ошибки работы самого скрипта.

Notice: Undefined index: response in /var/www/users/data/www/site.ru/vkclass.php on line 64

Обозначает то, что в результате не был получен массив response, а скорее всего был получен error, с описанием ошибки. Дальше ошибки, скорее всего выплывающие отсюда.

дани мапов
На сайте с 06.09.2012
Offline
204
#10

Посмотрите, что в $server находится после этого:

$server = $vk->api('photos.getWallUploadServer', array(

'group_id' => $app ['group_id']

));

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий