attachment vk api php
Автоматический постинг в ВК wall.post с attachment
Ваяем автоматический постинг в ВК wall.post с attachment (фото) на PHP. Погнали.
В ВКонтакте хоть и есть документация, но с wall.post есть особенности. Для начала регистрируем приложение и оно должно быть Standalone, настройки такие:
Если постить в сообщество, то вы должны иметь на неё админские права, а при создании приложения эту группы выбрать.
Первым делом получим токен (я использовал класс за авторством Dmitriy Nyashkin:
Токен надо получить 1 раз, т.е. два разных скрипта — один только для получения токена, второй — для постинга записей себе или в группу/сообщество.
И, пожалуй, самое попадалово, что при добавлении фотографии её название (caption) надо прогнать urlencode. Нетривиальная особенность, а в документации про это ничего не сказано (или я слепой).
У меня таким макаром постятся фото, новые записи из блога и юбилейные даты из Петербургского календаря. По времени создания записей видно что они автоматические.
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье или нужно реализовать доработки по программной части? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670), Telegram (@panevin_ru) или перепиской в ВК.
1000 р./час. Часовой пояс — московский.
Помогла статья? На поездку на море (Охотское):
Attachment vk api php
Чтобы создать предложенную запись, необходимо передать в owner_id идентификатор публичной страницы, в которой текущий пользователь не является руководителем.
Для публикации предложенных и отложенных записей используйте параметр post_id, значение для которого можно получить методом wall.get с filter=suggests и postponed соответственно.
| owner_id | идентификатор пользователя или сообщества, на стене которого должна быть опубликована запись. |
Обратите внимание, идентификатор сообщества в параметре owner_id необходимо указывать со знаком «—» — например, owner_id=-1 соответствует идентификатору сообщества ВКонтакте API (club1)
Формат описания ссылки:
— протокол HTTP или HTTPS.
— оставшаяся часть URL.
Формат для перечисления объектов:
Обратите внимание, можно указать несколько медиа-приложений, но только одну ссылку. Если указать больше одной ссылки, будет возвращена ошибка.
Attachment vk api php
Возможность поделиться с друзьями своей фотографией, загрузить на страницу любимую аудиозапись или понравившийся видеоклип очень важна для многих пользователей. Реализовав эту функциональность, Вы сделаете свое приложение более привлекательным и востребованным.
Процесс загрузки любого файла состоит из трех стандартных этапов:
1. Получение адреса для загрузки.
2. Передача содержимого файлов на полученный адрес в формате multipart/form-data.
3. Сохранение информации о загруженном файле.
Детали процесса загрузки (например, название поля с файлом в POST-запросе) могут различаться в зависимости от типа файла. Ниже представлено подробное руководство для всех типов медиаконтента.
Допустимые форматы: JPG, PNG, GIF.
Ограничения: не более 5 фотографий за один раз, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБ, соотношение сторон не менее 1:20.
Вызовите метод photos.getUploadServer, чтобы получить адрес для загрузки фото. Для загрузки фотографии в сообщество необходимо передать идентификатор сообщества в параметре group_id.
Передайте файлы на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полями file1—file5. Эти поля должны содержать изображения в формате multipart/form-data.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server, photos_list, hash, aid:
Поля server и aid содержат числовые значения, в hash возвращается строка, а в поле photos_list находится строка с JSON-объектом, структуру которого важно сохранить в исходном виде. В PHP Вы можете использовать json_decode() для всего ответа.
Допустимые форматы: JPG, PNG, GIF.
Ограничения: не более 6 фотографий за один раз в методе photos.saveWallPhoto, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБ, соотношение сторон не менее 1:20.
Поле POST-запроса: photo.
Вызовите метод photos.getWallUploadServer, чтобы получить адрес для загрузки фото. Для загрузки фотографии в сообщество необходимо передать идентификатор сообщества в параметре group_id.
Передайте файл на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полем photo. Это поле должно содержать изображение в формате multipart/form-data.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server, photo, hash:
Поле server содержит числовое значение, в hash возвращается строка, а в поле photo находится JSON-объект, структуру которого важно сохранить в исходном виде. В PHP Вы можете использовать json_decode() для всего ответа.
Чтобы сохранить фотографию, вызовите метод photos.saveWallPhoto с параметрами server, photo, hash, полученными на предыдущем этапе.
Допустимые форматы: JPG, PNG, GIF.
Ограничения: размер не менее 200x200px, соотношение сторон от 0.25 до 3, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБ, соотношение сторон не менее 1:20.
Поле POST-запроса: photo.
Вызовите метод photos.getOwnerPhotoUploadServer, чтобы получить адрес для загрузки фото. Для загрузки главной фотографии сообщества необходимо передать его идентификатор со знаком «минус» в параметре owner_id.
Передайте файл на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полем photo. Это поле должно содержать изображение в формате multipart/form-data.
Дополнительно Вы можете передать параметр _square_crop в формате «x,y,w» (без кавычек), где x и y — координаты верхнего правого угла миниатюры, а w — сторона квадрата. Тогда для фотографии также будет подготовлена квадратная миниатюра.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server, photo, mid, hash, message_code, profile_aid:
Поля server, mid, message_code, profile_aid содержат числовые значения, а в полях hash и photo возвращаются строки.
Чтобы сохранить фотографию, вызовите метод photos.saveOwnerPhoto с параметрами server, photo, hash, полученными на предыдущем этапе.
Допустимые форматы: JPG, PNG, GIF.
Ограничения: сумма высоты и ширины не более 14000px, файл объемом не более 50 МБ, соотношение сторон не менее 1:20.
Поле POST-запроса: photo.
Вызовите метод photos.getMessagesUploadServer, чтобы получить адрес для загрузки фото.
Передайте файл на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полем photo. Это поле должно содержать изображение в формате multipart/form-data.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server, photo, hash:
Поле server содержит числовое значение, в hash возвращается строка, а в поле photo находится JSON-объект, структуру которого важно сохранить в исходном виде. В PHP Вы можете использовать json_decode() для всего ответа.
Автоматическая публикация статей на стене вашей группы во ВКонтакте с помощью VK API
Автоматический постинг статей или ссылок в группе сайта ВКонтакте весьма удобная и полезная вещь! В данной статье мы вам подробно покажем, с примером, как сделать эту фишку. Хватит лирики, к делу!
1. Вам нужно создать Standalone-приложение, у которого нет ограничений на выполнение API для публикации сообщений в группу этой социальной сети. После создания приложения вам понадобится ввести код из смс, который нужно подтвердить. После успешного ввода ваше приложение будет создано и вам нужно включить приложение (изменить его состояние), а так же скопировать ID приложения и Защищённый ключ.
2. Теперь для выполнения API вам потребуется получить оffline access token, который генерируется следующим запросом прямо в браузере:
Где app_id — ID вашего приложения. При переходе по такой ссылке, ВКонтакте запросит доступ, разрешите ему.
При успешном переходе по данному адресу вы получите значение access_token на странице заглушки (https://oauth.vk.com/blank.html), его скопируйте и сохраните. Не кому не показывайте access_token!
3. Теперь вам понадобиться ID вашей группы ВКонтакте. ID группы можно узнать по https://vk.com/public12345678, где в данном случае id является: 12345678. Если у вашей группы адрес вида https://vk.com/name, то зайдите в любой альбом группы и в адресной строке браузера вы увидите подобное этому album-55044319_182468078 где 55044319 и есть ID вашей группы.
4. Ну и осталось только написать php код, который и будет делать постинг:
Публикация записей на стену сообщества VK
Для начала вы должны быть авторизированы в VK и являться администратором группы или страницы. Далее нужно создать приложение.
Создание приложения
В настройках приложения включаем Open API, указываем адрес своего сайта и базовый домен, там же находится ID приложения и защищенный ключ.
Получаем access token
Этап 1
Нужно получить права и секретный код. Формируем URL подставляя данные своего приложения и вставляем его в браузер.
https://oauth.vk.com/authorize?client_id= ID_ПРИЛОЖЕНИЯ &display=page
&redirect_uri=https://api.vk.com/blank.html&scope=offline,wall,photos
&response_type=code
В ответе получаем в секретный код.
Этап 2
https://oauth.vk.com/access_token?client_id= ID_ПРИЛОЖЕНИЯ
&client_secret= ЗАЩИЩЕННЫЙ_КЛЮЧ &redirect_uri=https://api.vk.com/blank.html
&code= СЕКРЕТНЫЙ_КОД
Далее используем полученный токен в запросах к VK API:
Пост с ссылкой
Следующий PHP-код добавит пост с текстом и ссылкой на сайт.
Описание метода wall.post на https://vk.com/dev/wall.post
Результат
Картинка в ссылке берется с сайта. VK пытается найти картинку в тексте страницы, но можно ее указать мета-тегом в страницы.
Пост с картинкой
Результат:
Возможные проблемы
Функция file_get_contents() не может подключится по https, нужно включить PHP модуль openSSL.
API возвращает ошибку – error_code: 14, error_msg: Captcha needed
Это происходит из-за слишком частых запросов к API или у учетной записи VK был отвязан номер мобильного телефона.










