Ошибка api вконтакте

Перейти к содержанию

VK API Error Code – Коды ошибок Вконтакте

Список всех возвращаемых кодов ошибок API в ВК

Код ошибки Описание
1 Произошла неизвестная ошибка.
Попробуйте повторить запрос позднее.
2 Приложение выключено. 
Нужно включить приложение в настройках https://vk.com/editapp?id={Ваш API_ID} или воспользоваться тестовым режимом (test_mode=1)
3 Передан неизвестный метод.
Нужно проверить указано ли название вызываемого метода: https://vk.com/dev/methods.
4 Неверная подпись. 
5 Авторизация пользователя не удалась.
Следует убедиться, что используется верная схема авторизации.
6 Слишком много запросов в секунду.
Нужно задать больший интервал между запросами или использовать метод execute. Узнать подробнее об ограничениях на частоту вызовов можно тут: https://vk.com/dev/api_requests.
7 Нет прав для выполнения этого действия.
Следует проверить, получены ли необходимые права доступа при авторизации. Сделать это можно с помощью метода account.getAppPermissions.
8 Неверный запрос.
Нужно проверить синтаксис запроса и список параметров, которые используются.
9 Слишком много однотипных действий.
Нужно уменьшить число однотипных обращений. Для оптимизации работы можно использовать execute или JSONP.
10 Произошла внутренняя ошибка сервера.
Попробуйте повторить запрос позже.
11 В тестовом режиме приложение должно быть выключено или пользователь должен быть залогинен.
Следует выключить приложение в настройках https://vk.com/editapp?id={Ваш API_ID}
14 Требуется ввод кода с картинки (Captcha).
Процесс обработки этой ошибки подробно описан на странице.
15 Доступ запрещён.
Следует убедиться, что используются верные идентификаторы, а также, что доступ к запрашиваемому контенту для текущего пользователя есть в полной версии сайта.
16 Требуется выполнение запросов по протоколу HTTPS, т.к. пользователь включил настройку, требующую работу через безопасное соединение.
Во избежание возникновения этой ошибки, в Standalone-приложении можно предварительно проверять состояние этой настройки у пользователя методом account.getInfo.
17 Требуется валидация пользователя.
Действие требует подтверждения — нужно перенаправить пользователя на служебную страницу для валидации.
18 Страница удалена или заблокирована.
Страница пользователя была удалена или заблокирована
20 Данное действие запрещено для не Standalone приложений.
Если ошибка появляется несмотря на то, что приложение имеет тип Standalone, следует убедиться, что при авторизации было использовано redirect_uri=https://oauth.vk.com/blank.html. Подробнее на странице: https://vk.com/dev/auth_mobile.
21 Данное действие разрешено только для Standalone и Open API приложений.
23 Метод был выключен.
Ознакомиться со всеми актуальными методами ВК API, доступными в настоящий момент можно тут: https://vk.com/dev/methods.
24 Требуется подтверждение со стороны пользователя.
27 Ключ доступа сообщества недействителен.
28 Ключ доступа приложения недействителен.
29 Достигнут количественный лимит на вызов метода.
Узнать подробнее об ограничениях на количество вызовов можно тут:
https://vk.com/dev/data_limits
30 Профиль является приватным.
Информация, которая запрашивается о профиле, недоступна с используемым ключом доступа
33 Еще не реализовано.
100 Один из необходимых параметров был не передан или неверен.
Следует проверить список требуемых параметров и их формат на странице с описанием метода.
101 Неверный API ID приложения.
Нужно найти приложение в списке администрируемых на странице, и указать в запросе правильный API_ID (идентификатор приложения).
113 Неверный идентификатор пользователя.
Следует убедиться, что используется правильный идентификатор. Получить ID по короткому имени можно методом utils.resolveScreenName.
150 Неверный timestamp (метка времени).
Актуальное значение можно получить методом utils.getServerTime.
200 Доступ к альбому запрещён.
Нужно убедиться, что используются верные идентификаторы (для пользователей owner_id — положительный, для сообществ — отрицательный), и доступ к контенту, которые запрашивается, для текущего пользователя есть в полной версии сайта.
201 Доступ к аудио запрещён.
Нужно убедиться, что используются верные идентификаторы (для пользователей owner_id — положительный, для сообществ — отрицательный), и доступ к контенту, которые запрашивается, для текущего пользователя есть в полной версии сайта.
203 Доступ к группе запрещён.
Нужно убедиться, что текущий пользователь является участником или руководителем группы (для закрытых и частных групп и встреч).
300 Альбом переполнен.
Перед продолжением работы нужно удалить лишние объекты из альбома или использовать другой альбом.
500 Действие запрещено. Вы должны включить переводы голосов в настройках приложения.
Следует проверить настройки приложения: https://vk.com/editapp?id={Ваш API_ID}&section=payments
600 Нет прав на выполнение данных операций с рекламным кабинетом.
603 Произошла ошибка при работе с рекламным кабинетом.
3300 Требуется рекапча.
3301 Требуется подтверждение телефона.
3302 Требуется подтверждение пароля.
3303 Требуется проверка приложения Otp.
3304 Требуется подтверждение по электронной почте.
3305 Требуется утвердить голоса.

VK API Error Code

Vencendor

Задача постить с сервера посты с картинками в группу. использую https://github.com/fdcore/vk.api

почему начала появляться ошибка, раньше ее не было:

Validation required: please open redirect_uri in browser

как это можно исправить?

пробовал ставить права offline, при получении токена.
пробовал редиректить redirect_uri на сайт с сервера которого буду постить

ничего не помогает.


  • Вопрос задан

  • 1820 просмотров



1

комментарий


Решения вопроса 1

Vencendor

Решение: среди данных об ошибке есть redirect_uri, этот адрес обычно имеет вид https://m.vk.com/login?act=security_check&api_hash… нужно открыть с того же ip что и обращение к api. При открытии может быть произведена проверка телефона, как при открытии своей страницы с другой страны.


Комментировать

Пригласить эксперта


Ответы на вопрос 2

Данный метод доступен только Standalone-приложениям и web-приложениям, использующим окно подтверждения.

vk.com/dev/wall.post

Т.е. использовать его на стороне сервера запрещено.

arti_djeims

права нужно в предыдущих версиях там капча


Комментировать


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


  • Показать ещё
    Загружается…

22 сент. 2023, в 13:33

60000 руб./за проект

22 сент. 2023, в 13:26

300000 руб./за проект

22 сент. 2023, в 13:21

100 руб./за проект

Минуточку внимания

Обработка ошибок

Иногда при запросах к api вконтакте возникают ошибки, для их обработки во фреймворке предусмотрено несколько инструментов

try … except VKAPIError

Для начала разъясним что такое VKAPIError, это подтип CodeException, особенность которого заключается в том, чтобы ошибка идентифицировалась в except и без указанного кода (except VKAPIError) и при указании кода (except VKAPIError[code])

В VKAPIError есть два поля:

  • code — код ошибки, int
  • error_msg — описание ошибки, str

Чтобы использовать VKAPIError нужно импортировать его:

from vkbottle import VKAPIError

Теперь можно обернуть какой нибудь код с запросом к API:

try:
    await api.wall.post()
except VKAPIError as e:
    print("Возникла ошибка", e.code)

При исполнении этого кода vk вернет ошибку, из-за того что не были переданы нужные параметры

try … except VKAPIError[code]

Кроме более общего способа для обработки всех ошибок vk в одном блоке except, вы можете воспользоваться более конкретным VKAPIError[code]

Примечание

Список всех ошибок с их кодами вы можете найти здесь

Сделаем несколько блоков для демонстрации того, как первый и второй способ можно комбинировать

try:
    await api.messages.send(peer_id=1, message="привет!", random_id=0)
except VKAPIError[902] as e:
    print("не могу отправить сообщение из-за настроек приватности")
except VKAPIError as e:
    print("не могу отправить:", e.error_msg)

Специфичные ошибки

Некоторые ошибки vk имеют дополнительные поля, которые могут понадобиться вам для их обработки:

  • CaptchaError:
    • captcha_sid — идентификатор captcha, int
    • captcha_img — ссылка на изображение, str

ErrorHandler

Примечание

Инструмент будет рассматриваться конкретно с ботом, хоть это и отдельный объект, так как это — туториал — упрощенный вариант документации

Техническая документация по хендлеру ошибок здесь

У ErrorHandler есть 4 метода:

  • register_error_handler — декоратор, принимающий типы ошибок и асинхронную функцию-хендлер. Если возникнет одна из указанных ошибок (или её подтипа), исполнится указанный хендлер.
  • register_undefined_error_handler — декоратор, принимающий тип ошибки и асинхронную функцию-хендлер. Если возникнет неизвестная ошибка, исполнится этот хендлер.
  • handle, принимающий экземпляр ошибки. Передаёт ошибку в соответствующий хендлер, зарегистрированный с помощью вышеописанных декораторов. Если для данной ошибки нет хендлера, поднимает её.
  • catch — декоратор. Ловит ошибки из декорированной функции и передаёт их методу handle.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from vkbottle import Bot, VKAPIError

bot = Bot("token")


@bot.error_handler.register_error_handler(RuntimeError)
async def runtime_error_handler(e: RuntimeError):
    print("возникла ошибка runtime", e)


@bot.error_handler.register_error_handler(VKAPIError[902])
async def unable_to_write_handler(e: VKAPIError):
    print("человек не разрешил отправлять сообщения", e)

В примере создано 2 хендлера ошибок: для RuntimeError и конкретизированного VKAPIError

Также можно регистрировать хендлеры сразу для нескольких типов ошибок:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from typing import Union

from vkbottle import Bot, VKAPIError

bot = Bot("token")


@bot.error_handler.register_error_handler(TypeError, ValueError)
async def type_or_value_error_handler(e: Union[TypeError, ValueError]):
    print("возникла ошибка type или value", e)


@bot.error_handler.register_error_handler(*VKAPIError[6, 9])
async def limit_reached_write_handler(e: VKAPIError):
    print("ой, слишком много запросов", e)

Ещё у ErrorHandler есть параметр redirect_arguments: bool, который позволяет передавать в хендлер аргументы из задекорированной с помощью catch функции. В связке с ботом позволяет передать в хендлер контекстные аргументы из правил и мидлварей.

Подробнее про ErrorHandler.catch можно почитать здесь

Vk_api предоставляет удобный способ создания ботов для социальной сети ВКонтакте. Однако, при работе с API могут возникать ошибки, которые необходимо обрабатывать правильно для корректной работы бота. В этой статье мы рассмотрим лучшие практики обработки ошибок при создании бота на Vk_api.

Обработка ошибок функции API

Первая и наиболее распространённая ошибка — ApiError, возникающая при вызове функций API. Для обработки этой ошибки можно использовать конструкцию try-except:

import vk_api

vk_session = vk_api.VkApi(token='TOKEN')
vk = vk_session.get_api()

try:
    vk.method_name(parameter)
except vk_api.exceptions.ApiError as e:
    print(e)

Таким образом, мы устанавливаем соединение с API, вызываем нужную функцию, и обрабатываем возможную ошибку с помощью исключения vk_api.exceptions.ApiError и выводим её на экран.

Обработка ошибок подключения и авторизации

Если возникает ошибка при авторизации или подключении к API, необходимо управлять ей так же, как и с ApiError. Можно использовать исключение ConnectionError, чтобы обработать ошибку подключения, или vk_api.AuthError, чтобы обработать ошибку авторизации:

import vk_api

try:
    vk_session = vk_api.VkApi(token='TOKEN')
    vk_session.auth()
    vk = vk_session.get_api()
except (vk_api.AuthError, vk_api.exceptions.ApiError, ConnectionError) as e:
    print(e)

Здесь мы обрабатываем три различные ошибки, такие как AuthError, ApiError и ConnectionError, используя исключения.

Обработка ошибок несуществующего ключа

Ещё одним распространённым случаем ошибки является передача несуществующего ключа доступа. Для обработки этой ошибки можно использовать KeyError, чтобы проверить, был ли передан корректный ключ:

try:
    vk_session = vk_api.VkApi(token='TOKEN')
    vk_session.auth()
    vk = vk_session.get_api()
except (KeyError) as e:
    print(e)

Таким образом, мы проверяем, был ли передан корректный ключ доступа.

Уход от частых ошибок

Чтобы избежать частых ошибок, можно использовать одну из этих практик:

  1. Логирование ошибок — это удобный способ отследить возникновение ошибок в процессе работы бота и определить их причины.
  2. Использование необходимых прав доступа — чтобы избежать ошибок, связанных с необходимостью прав доступа, рекомендуется проверять их правильность и использовать только необходимые права.
  3. Использование совместимых версий API — для избежания ошибок рекомендуется использовать только последние совместимые версии API.

Заключение

Обработка ошибок является важной составляющей создания ботов на Vk_api. В статье были рассмотрены лучшие практики обработки ошибок при работе с API социальной сети ВКонтакте. Использование конструкций try-except, логирование ошибок, проверка прав доступа и использование совместимых версий API помогут сделать вашего бота более надежным и удобным в использовании.

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

Обратите внимание:

В статье приводятся 5 наиболее часто возникающих возвращаемых ошибок API VK по мнению редакции сайта.

Ошибка 9 – слишком много однотипных действий

Ошибка явно указывает, что пользователь делает слишком много однотипных действий.

Решение: Рекомендуется для эффективной работы использовать методы execute или JSONP, чтобы сократить количество однотипных обращений к API ВКонтакте.

Ошибка 10 – ошибка сервера

Internal server error code 10. Эта ошибка является наиболее распространенной, если вы работаете строго по инструкциям. Она возникает при нестабильном соединении или при наличии проблем на серверах самого ВКонтакте.

Решение: Исправить самостоятельно данную ошибку никак нельзя. Если проблем с интернет-соединением не наблюдается, вероятнее всего проблема на стороне ВКонтакте. Остается подождать, а после повторить запрос. Обычно через 10-20 минут, если проблема была в серверах, ошибка пропадает.

Рекомендация:

Если вы планируете создавать свой требовательный к мощностям сервера проект, не рекомендуется на этом экономить. Лучше арендовать сервер с проверенной репутацией, подобрав оптимальный вариант по мощности под свои задачи. Тогда пользователи не будут сталкиваться с проблемами при обращении к вашему серверу.

Ошибка 27 – ключ доступа сообщества недействителен

Еще одна распространенная ошибка среди программистов – использование неверного токена. Если вы при разработке приложения пытаетесь с токеном сообщества вызвать метод, который возможно вызвать только с токеном пользователя, вернется ошибка под номером 27.

Обратите внимание:

Такая ошибка может возникнуть, если срок действия токена сообщества закончился.

Решение: Использовать правильный токен.

Ошибка 28 – ключ действия приложения недействителен

Эта ошибка практически идентична той, что была описана выше. Она говорит о том, что используемый ключ действия приложения недействителен – вышел его срок или он введен неверно.

Решение: Использовать верный ключ действия приложения.

Ошибка 100 – неверная передача параметров

Полностью ошибка звучит следующим образом: «Один из необходимых параметров был не передан или неверен». Как можно понять из описания, при передаче параметров была допущена ошибка.

Решение: На странице с описанием метода ознакомиться со списком требуемых параметров и их форматом, чтобы устранить возникшую проблему.

Эти 5 ошибок, рассмотренные в статье, возникают наиболее часто. Как можно видеть, чаще всего они связаны с невнимательностью или с ошибками на стороне самого сервера ВКонтакте. Отсюда вывод один – внимательно читайте документация по работе с API.

Понравилась статья? Поделить с друзьями:
  • Ошибка api ms win crt runtime
  • Ошибка apex legends время подключения к серверу истекло
  • Ошибка apex legends engine error audio ship
  • Ошибка apex legends engine error 0x887a0006
  • Ошибка apc fanuc