@cm_platon

Как отправить пост на стену группы Вконтакте с картинкой средствами VK API JavaScript?

Доброго вечера!

Подскажите, пожалуйста, как организовать отправку поста (текст) с картинкой в свою группу Вконтакте? Да, сам принцип отлично описан тут. Вопрос именно в рабочем примере, который никак не могу найти/написать.

С отправкой текста (на JS) — вроде как разобрался.

index.html:

<script src="//vk.com/js/api/xd_connection.js?2" type="text/javascript"></script>
<script src="//vk.com/js/api/openapi.js" type="text/javascript"></script>

<button id="send_tour_button">Отправить в группу Вконтакте</button>

  <script>
    // VK Init.
    VK.init({
      apiId: ID_APP
    });
    // Сама функция.
    function WallPost(send_data) {
      VK.api('wall.post', {owner_id: '-GROUP_ID', message: send_data}, function(data) {
        if (data.response) alert('Успешно опубликовано в группе!');
      });
    }
    // Send.
    document.getElementById('send_tour_button').onclick = function() {
      WallPost('Тестовое сообщение!');
    }
  </script>


Как сюда дописать ещё и прикрепление картинки (перед отправкой) и последующую отправку? Картинка лежит в той же папке, что и index.html.

Заранее благодарю!
  • Вопрос задан
  • 3622 просмотра
Пригласить эксперта
Ответы на вопрос 1
neluzhin
@neluzhin
Конкретно через JavaScript загрузить у вас файлы не получится банально потому, что VK API не поддерживает CORS.

Предположим, что у вас на сайте есть форма, где textarea и input[type=file]. Вы хотите сделать так, чтобы при отправке формы всё это добро постилось во ВКонтакте на стене вашей группы. Шаги будут примерно такие:
  1. После нажатия кнопки "Отправить" с помощью AJAX отправляйте изображение на ваш сервер.
  2. Получив изображение на сервере, согласно инструкции, загрузите его в альбом вашей группы ВК.
  3. После выполнения загрузки изображения ВК вернет вам его ID. Вы должны этот ID вернуть пользователю в ответ на загрузку изобржения, описанную в первом шаге.
  4. Приложите ID изображения как вложение к публикуемой записи. Пример кода:

    VK.api('wall.post', {
    	owner_id: '-GROUP_ID',
    	message: send_data,
    	attachments: 'photo' + photo_id // photo_id - это ID изображения
    }, function(data) {
    	if (data.response) alert('Успешно опубликовано в группе!');
    });


Но если вы делаете какое-то подобие веб-админки для ваших сообществ, то я бы задумался о полном переезде на standalone-приложение, где все методы выполняются на стороне сервера.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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