Millerish
@Millerish

VK Сообщества: как отправить сообщение с фотом?

Доброе время суток!

Мне нужно отправить сообщение от имени сообщества с вложением фото. Чтобы это сделать нужно сначала загрузить фото, типа такого запроса:

$token = 'XXX';
$group_id = '162294758';
$album_id = '162294758';
$v = '5.64'; //версия vk api
$image_path = "http://worldwideshop.ru/vbot-dev/api/test.jpg"; //путь до картинки
$fp = fopen($image_path, 'r');

// получаем урл для загрузки
$url = file_get_contents("https://api.vk.com/method/photos.getUploadServer?album_id=".$album_id."&group_id=".$group_id."&v=".$v."&access_token=".$token);
$url = json_decode($url)->response->upload_url;
print_r($url);

// отправка post картинки
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_INFILE, $fp);
$result = json_decode(curl_exec($ch),true);
print_r($result);

// сохраняем
$safe = file_get_contents("https://api.vk.com/method/photos.save?server=".$result['server']."&photos_list=".$result['photos_list']."&album_id=".$result['aid']."&hash=".$result['hash']."&gid=".$group_id."&access_token=".$token);
$safe = json_decode($safe,true);
print_r($safe);


Array ( [error] => Array ( [error_code] => 5 [error_msg] => User authorization failed: method is unavailable with group auth. [request_params] => Array ( [0] => Array ( [key] => oauth [value] => 1 ) [1] => Array ( [key] => method [value] => photos.save ) [2] => Array ( [key] => server [value] => ) [3] => Array ( [key] => photos_list [value] => ) [4] => Array ( [key] => album_id [value] => ) [5] => Array ( [key] => hash [value] => ) [6] => Array ( [key] => gid [value] => 162294758 ) ) ) )


Вопросы:
  1. Куда правильно загружать это фото изначально? Если в альбом сообщества - он же должен быть публичным?
  2. Подскажите простой пример для загрузки attachment(в сети или готовые большие решения или старые неработающие частички кода, типа ссылок на git тут).
  • Вопрос задан
  • 749 просмотров
Пригласить эксперта
Ответы на вопрос 1
vkapi
@vkapi
0. Нельзя свой токен вот так в открытом доступе выкладывать! Надеемся, он уже инвалидирован.

1. Для загрузки фото в диалог нужно использовать специальные методы:
https://vk.com/dev/photos.getMessagesUploadServer
https://vk.com/dev/photos.saveMessagesPhoto

2. Во втором запросе не хватает параметра версии v, а он обязателен в любом запросе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы