ID: 191

Как сделать вывод виджетов через python скрипт

326
Это картинка
Инструкция с картинками
Категории: other_article
Дата редактирования: 2022-05-19 23:16:21
Вложения
widgets_update.py
Скачать файл
Вся загвоздка подключения вывода виджетов в группах (что послужило для написания этой инструкции) является в необходимости получить специальный токен приложения для работы через метод обновления информации (https://dev.vk.com/method/appWidgets.update).

Как говорится документации метода помимо необходимого токена в метод обязательно передавать тип виджета и его код. В этом примере будет взят табличный виджет из документации. Но сперва начнём с токена:

Если вызывать метод с токена пользователя или сообщества (которые получаются для работы ботов), то метод будет выдавать ошибку: vk_api.exceptions.ApiError: [15] Access denied: method available only for community applications

И это стало причиной тратить много времени на чтение множества страниц ненужной (для данной задачи) документации вк чтобы найти ответ на вопрос где получать этот пресловутый токен. Пройдя множество страниц этой документации из всех ссылок документации данного метода (верная цепочка https://dev.vk.com/api/community-apps-widgets/getting-started --> https://dev.vk.com/bridge/VKWebAppGetCommunityToken и в самом низу нужная ссылка...) находим нужную ссылку:

https://vk.com/away.php?to=https://vk.cc/bZfqzK

Картинка 1. Приложение получения токена для вызова методов обновления виджета



В данном приложении не трогаем число в поле app_id (число остается данного приложения, никаких id своих приложений указывать не надо, и создавать их не нужно... У меня чтобы это понять ушло много времени и без результата, так как то свое приложение не добавлялось сперва в группу, то токен не получался и т.д. ...), в поле group_id указываем нужное сообщество а в поле scope указываем app_widget нажимаем кноп отправить и подтверждаем это. После этого вуаля нужный токен! (Токен хранится в значении ключа "access_token").

Затем добавляем это же приложение в свою группу. Добавить можно по этой ссылке https://vk.com/add_community_app.php?aid=6909581. (Про то что его можно добавлять в группу в прочитанной документации не было и слова, и в каталоге приложений тоже не найдено было, в итоге добавлено через метод тыка и подстановок в ссылку, на что тоже было затрачено время).

После добавления приложения в сообщество теперь можно обновлять скриптом виджеты!

Проверяем что всё работает, запускаем скрипт с незначительно измененным примером виджета из документации (оригинальный пример не работает из-за недоступности картинок и необходимости подставить свои ссылки).

Картинка 2. Простенький код вызова метода обновления виджета для проверки что всё сделано верно. Код представлен в файле в начале статьи



Возможная ошибка кода (vk_api.exceptions.ApiError: [12] Unable to compile code: ';' expected, ' in line 1) в примере исправлена. (Возникает из-за отсутствия в питоне ; а ведь нам надо составлять запросы внутри метода на JavaSсript или ActionScript).


Картинка 3. Результат работы скрипта, виджет появился



Картинка 4. Чтобы виджет стал всем виден, в настройках сообщества у приложения меняем видимость виджета



На всякий случай немного документации по типам виджетов:
Коды виджетов https://dev.vk.com/api/community-apps-widgets/getting-started
Типы виджетов: https://dev.vk.com/reference/objects/app-widget