Ответы пользователя по тегу ВКонтакте
  • Как вывести 2 предложения отправить пост при нажатии на кнопку?

    neluzhin
    @neluzhin
    Сначала вызываете один запрос на создание записи, после его выполнения будет коллбэк. При получении коллбэка сразу же отправляете второй запрос.

    Что-то типа такого:
    VK.api("wall.post", {"message": "Этот пост мне на стену!"}, function (data1) {
    	VK.api("wall.post", {"message": "А этот пост в группу!", "owner_id": -123456}, function (data2) {
    		alert("Вы отправили 2 записи!")
    	});
    });
    Ответ написан
    Комментировать
  • Как отправить пост на стену группы Вконтакте с картинкой средствами VK API JavaScript?

    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-приложение, где все методы выполняются на стороне сервера.
    Ответ написан
    Комментировать
  • Можно ли получить id пользователя через openaApi без авторизации в приложении?

    neluzhin
    @neluzhin
    Насколько мне известно, нет легального способа узнать ID ВКонтакте случайного посетителя сайта.
    Ответ написан
    Комментировать
  • Как заставить работать board.deleteComment?

    neluzhin
    @neluzhin
    Права на доступ к группам даются через ключевое слово groups (вы букву потеряли).

    Если все же проблема не в опечатке, то проверьте, работает ли у вас удаление комментариев в обсуждении через консоль (форма внизу страницы).
    Ответ написан
    Комментировать
  • Vk API, загрузить изображение от имени группы?

    neluzhin
    @neluzhin
    Сам долго возился с этим и не смог придумать ничего лучше, чем загружать фотографию в альбом группы, и оттуда ее прикреплять на стену. Но сейчас буквально на коленке придумал алгоритм, который в теории может сработать.

    Если проводить загрузку фотографии методами photos.getWallUploadServer -> photos.saveWallPhoto, как вы и делаете, то в альбом фотографий со стены (vk.com/album-12345_00 - выделенное жирным поменять на ID вашего сообщества) загруженная фотография все же добавляется. И находится она там от имени сообщества. Предполагаю, что в данном случае надо методом photos.get получить ID последней фотографии и прикладывать ее к посту.
    Ответ написан
    2 комментария
  • Как создать вики страницу вк через апи?

    neluzhin
    @neluzhin
    Не слушайте Андрея - создавать вики-страницы через VK API очень даже можно.

    Вам необходимо использовать метод pages.save и передать в нем параметр title, который будет являться названием созданной вами вики-страницы (в таком случае параметр page_id можно не передавать).

    После успешного выполнения данный метод вернет вам ID созданной страницы.
    Ответ написан
    Комментировать
  • Регулярка. Как определить наличие определенного фрагмента внутри [] и заменить его?

    neluzhin
    @neluzhin
    Предыдущий ответ, где вам порекомендовали регулярку, похожую на сиськи, от части верный, но только от части. Проблема в том, что в квадратных скобках может быть и не ссылка на группу, паблик, мероприятие или человека. Например, [x|test] в социальной сети не преобразуется в гиперссылку и отобразится плейн текстом, а вы создадите гиперссылку, ведующую на 404-ю страницу.

    Вы должны обрабатывать только гиперссылки, начинающиеся с club или id, и заканчивающиеся числом. В любом другом формате ВКонтакте гиперссылки не хранит. Правильное регулярное выражение выглядит примерно так:

    /\[((?:club|id)[0-9]+)\|(.+)\]/

    И вставить это добро можно так:

    <a href="//vk.com/$1">$2</a>

    Ну и наглядный пример на PHP для самых маленьких:

    $comment = preg_replace('/\[((?:club|id)[0-9]+)\|(.+)\]/', '<a href="//vk.com/$1">$2</a>', $comment);

    Следует отметить, что публичные страницы (паблики) и мероприятия (ивенты) в виде гиперссылок также имеют приставку club, а не public и event.
    Ответ написан
    Комментировать
  • Почему не загружается фото на сервер Вконтакте?

    neluzhin
    @neluzhin
    Перед именем файла вы потеряли собачку. То есть у вас должно быть что-то вроде такого:
    $post_params['file'.$i] = '@myscreenshot.png';

    Для пущей наглядности кусок моего кода:
    $ch = curl_init();
    $parameters = array(
    	"file1" => '@'.__DIR__.'/path/to/myscreenshot.png'
    );
    		
    curl_setopt($ch, CURLOPT_URL, $upl_server);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    
    $curl_result = curl_exec($ch);
    curl_close($ch);
    Ответ написан
    Комментировать
  • Как средствами VK API создать в группе обсуждение с опросом?

    neluzhin
    @neluzhin
    Через API создать обсуждение с опросом нельзя.
    Ответ написан
    Комментировать
  • Как с помощью метода wall.post расшарить видео youtube?

    neluzhin
    @neluzhin
    В первую очередь, добавьте видео в видеозаписи пользователя или группы методом video.save. При вызове метода укажите в параметре link ссылку на ваше видео, загруженное на YouTube. После успешного выполнения метода вам вернется upload_url - к этому адресу надо будет сделать пустой POST-запрос (думаю, можно и GET). После обращения к upload_url вам сообщат ID загруженной аудиозаписи, который можно будет использовать в методе wall.post.
    Ответ написан
    1 комментарий
  • Как выглядит аналог curl для JS чтобы отправить запрос серверу?

    neluzhin
    @neluzhin
    Если вы про браузерный JavaScript, то CORS не даст вам этого сделать с VK API своими средствами. Для работы с VK API через браузер надо использовать Open API.
    Ответ написан
    3 комментария
  • Как проверить что пользователь состоит в группе ВК после нажатия на Лайк?

    neluzhin
    @neluzhin
    Предполагаю, что лучшей схемой будет что-то вроде такого:
    1. Просите пользователя поставить лайк;
    2. Поместите где-нибудь возле виджета лайка кнопку авторизации через ВК, получите ID пользователя и методом groups.isMember узнайте, состоит ли пользователь в группе.
    Ответ написан
  • Как публиковать ссылки в сообщество «В контакте» через контекстное меню браузера или через кнопку «Поделиться» на сайтах?

    neluzhin
    @neluzhin
    Если вы хотите сделать так, чтобы мимопроходящий на вашем сайте человек смог нажать кнопку "Поделиться" и сделать репост ссылки в свое сообщество, то у вас такое реализовать не получится. Но если пользователь авторизуется на вашем сайте через свою учетную запись ВК с правами на доступ к его сообществам, то нехитрым способом вы сможете это реализовать самостоятельно. Вы даже сможете повторить функционал Фейсбука, дав возможность выбора между репостом на свою стену, в группу или в ЛС другу. Однако, у пользователя могут возникнуть подозрения, когда он увидит, что приложение ВК, связанное с вашим сайтом, запрашивает у него доступ к его сообществам, стене и личным сообщениям.

    По поводу контекстного меню. Насколько мне известно, пока что (и не факт, что в будущем будут) браузеры не разрешают разработчикам сайтов вносить какие-либо изменения в контестное меню. Единственный способ повлиять на контекстное меню - создать расширение для браузера и просить пользователя установить его. Но это всё, разумеется, не отменит той возни, о которой я рассказал выше.

    Но если вам экспорт ссылок в вашу группу ВК необходим для личного пользования, то я предлагаю вам почитать документацию к расширениям для вашего браузера. Написать собственный экспортер ссылок через контекстное меню - не очень сложная задачка, особенно если вы владете базовыми знаниями JavaScript и VK API.
    Ответ написан
    Комментировать
  • Как узнать список пользователей, у которых в аудиозаписях есть данный исполнитель?

    neluzhin
    @neluzhin
    Никто не отвечает, отвечу я. VK API, а также возможности самой социальной сети, не предусматривают подобный функционал. Но.

    Если хочется острых ощущений, можете смотреть в сторону методов audio.get и execute и начать перебирать все ID'ы пользователей ВКонтакте, проверяя у каждого наличие той или определенной песни. Не знаю, сколько дней у вас займет один такой перебор, но если прям очень хочется, то попробуйте.
    Ответ написан
    4 комментария
  • Как считать лайки перепостов в VK?

    neluzhin
    @neluzhin
    Сам никогда не думал, что такое возможно реализовать. Сейчас покопался в API - похоже, такое действительно по человечески нельзя сделать. Единственный близкий к вашей идее метод на данный момент (версия API 5.45) - это wall.getReposts, и он возвращает информацию только о профилях людей, сделавших репост. Список записей возвращается только в том случае, если во время репоста человек что-нибудь написал. То есть, если 8 человек просто сделали репост, а 2 из них сделали репост и что-то написали, то данный метод вернет только 2 записи. Данный метод также сообщает количество лайков на этих самых записях.

    Для вас есть 3 выхода:
    1. Забить на реализацию сего инструмента или проводить конкурсы в других форматах;
    2. Просить пользователей в обязательном порядке писать что-нибудь к записи, которую они репостят;
    3. Написать какой-нибудь безумный алгоритм, который данным методом получит список пользователей, сделавших репост, а потом будет сканировать стены этих пользователей либо методом wall.search, либо методом wall.get. Но это извращение.
    Ответ написан
  • Как перенести комментарии из темы в группе vk на сайт?

    neluzhin
    @neluzhin
    Задуманное вами сделать не получится. Виджет комментариев - это комментарии, которые будут привязаны к вашему сайту (а точнее - к приложению). Грубо говоря, виджет комментариев - это некая "виртуальная" стена на вашем сайте.

    Чтобы вывести все ответы из обсуждения на ваш сайт, используйте метод API board.getComments. После того, как вы авторизуете пользователя через его учетную запись ВКонтакте, он сможет прямо с вашего сайта с помощью метода board.addComment оставлять комментарии в обсуждении, который отображается на вашем сайте. Эти сообщения будут дублироваться и в обсуждении в группе ВК.

    Если вы провернете фишку с авторизацией пользователя, то перед отправкой комментария обязательно предупредите его о том, что его комментарий появится в таком-то обсуждении.
    Ответ написан
    Комментировать
  • Разные урл для приложения ВКонтакте?

    neluzhin
    @neluzhin
    Предполагаю, что вашу задачу решит добавление хэша в ссылку на приложение. Например, если вы захотите показать пользователю именно холодильники, то следует отредактировать ссылку примерно так: vk.com/app123456#holodilniki.

    В таком случае при запуске приложения будет отправлен GET-параметр hash, который будет содержать всё, что находится после знака # в ссылке на приложение. Вот тут перечислены все параметры, передающиеся в приложение при первом запуске.

    Если вы захотите передать в приложение несколько параметров, то никакого "удобного" способа вы не найдете. Единственный способ - это передавать дополнительные параметры в том же хэше, например vk.com/app123456#holodilniki-page1, а дальше уже парсить этот параметр на стороне сервера или клиента.

    Обратите внимание на то, что массив данных, которые представлены по ссылке на документацию выше, отправляются только один раз при запуске приложения. Если пользователь перейдет по какой-нибудь внутренней ссылке внутри вашего приложения, то эти параметры еще раз не отправятся.
    Ответ написан
    1 комментарий