Перейти к содержанию
VK API Error Code – Коды ошибок Вконтакте
Код ошибки | Описание |
---|---|
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}§ion=payments |
600 | Нет прав на выполнение данных операций с рекламным кабинетом. |
603 | Произошла ошибка при работе с рекламным кабинетом. |
3300 | Требуется рекапча. |
3301 | Требуется подтверждение телефона. |
3302 | Требуется подтверждение пароля. |
3303 | Требуется проверка приложения Otp. |
3304 | Требуется подтверждение по электронной почте. |
3305 | Требуется утвердить голоса. |
При работе с 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.
При отправке сообщения ботом пользователю, крашится с ошибкой: vk_api.exceptions.ApiError: [901] Can't send messages for users without permission
, у бота имеются все нужные разрешение в настройках, так же у пользователя нет запрета на сообщения.
Код:
import vk_api
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
vk_session = vk_api.VkApi(token="Тут ваш токен")
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, "Айди сообщества (Не кастомное) пример: 94124211")
for event in longpoll.listen():
if event.obj.text != "":
if event.from_user:
vk.messages.send(
user_id=event.obj.from_id,
random_id=get_random_id(),
message=event.obj.text)
задан 6 окт 2019 в 4:48
5
Сам встретился с этой ошибкой, проблема оказалась в том, что мой бот пытался ответить на своё же сообщение, т.е. getFromId и getText на проблемном сообщении показал ответ сервера и минусовой id, вместо ожидаемого сообщения пользователя
Как сообщение бота попадает в пачку сообщений от вк пока разбираюсь.
ответ дан 11 мая 2020 в 4:55
Переписка с сообществом может быть инициирована только самим пользователем. Написать от имени группы людям, которые не переписывались с ним, не получится. Однако, когда переписка инициирована, сообщество сможет отправлять сообщения без ограничений по времени или количеству. Это будет продолжаться до тех пор, пока пользователь не запретит сообществу себе писать.
Пользователь может инициировать переписку:
- отправив сообществу сообщение со страницы сообщества;
- с помощью кнопки «Разрешить сообщения» на странице сообщества;
- отправив сообществу сообщение с помощью виджета «Сообщения
сообщества», размещённого на сайте сообщества; - разрешив отправлять ему личные сообщения с помощью виджета
«Разрешить писать
сообществу» или
метода API VK в стороннем
приложении
(отправлять сообщение для этого не требуется).
Источник: Сообщения сообщества.
ответ дан 6 окт 2019 в 7:40
nomnoms12nomnoms12
18.1k5 золотых знаков21 серебряный знак45 бронзовых знаков
4
901 — Пользователь запретил отправку сообщений от имени сообщества. Это значит, либо пользователь запретил получать сообщения от группы, либо ещё не писал в неё. Если, пользователь ВКонтакте не написал сообщение в группу, значит он и не может получать их, так как это скорее всего как анти-спам.
ответ дан 13 янв 2021 в 12:23
Скорее всего проблема в ID пользователя.
Можно использовать:
event.user_id
ответ дан 26 июл 2021 в 12:26
MassonMasson
353 бронзовых знака
0
Dave_ -4 / 26 / 9 Регистрация: 06.03.2015 Сообщений: 209 |
||||
1 |
||||
29.04.2016, 16:43. Показов 11104. Ответов 10 Метки нет (Все метки)
Код:
Ошибки: Код Traceback (most recent call last): File "D:PythonScriptsper.py", line 9, in <module> testpost() File "D:PythonScriptsper.py", line 8, in testpost api.wall.post(owner_id='41199695', message="Test API") File "D:Pythonlibsite-packagesvkapi.py", line 173, in __call__ return self._api._session.make_request(self) File "D:Pythonlibsite-packagesvkapi.py", line 102, in make_request raise error vk.exceptions.VkAPIError: 15. Access denied: no access to call this method. request_params = {'message': 'Test API', 'method': 'wall.post', 'oauth': '1', 'owner_id': '41199695'} Авторизация проходит успешно(видно по логам безопасности ВК), однако почему-то я не получаю нужных мне прав доступа к стене. Буду благодарен за помощь в решение этого вопроса…
__________________
0 |
Jabbson 5870 / 3333 / 1028 Регистрация: 03.11.2009 Сообщений: 9,957 |
||||
29.04.2016, 17:04 |
2 |
|||
Сообщение было отмечено Dave_ как решение РешениеНу написано же английским по-белому — нет прав для выполнения метода, значит нужно запросить это право во время AuthSession. Узнаем какое право. Идем на https://vk.com/dev/wall.post, читаем: Для вызова этого метода Ваше приложение должно иметь права: wall. (Подробнее о получении прав) Запрашиваем право —
2 |
-4 / 26 / 9 Регистрация: 06.03.2015 Сообщений: 209 |
|
29.04.2016, 17:50 [ТС] |
3 |
Большое спасибо, помогло. Не мог бы ты помочь мне еще с одной проблемой связанной с этим же: Код vk.exceptions.VkAPIError: 100. One of the parameters specified was missing or invalid: invalid publish_date param. request_params = {'publish_date': '1461940895', 'owner_id': '-120437782', 'method': 'wall.post', 'message': 'Test API', 'oauth': '1'} Кажись все по форме, в чем ошибка?
0 |
5870 / 3333 / 1028 Регистрация: 03.11.2009 Сообщений: 9,957 |
|
29.04.2016, 18:19 |
4 |
1 |
Dave_ -4 / 26 / 9 Регистрация: 06.03.2015 Сообщений: 209 |
||||||||
29.04.2016, 19:32 [ТС] |
5 |
|||||||
Большое спасибо за помощь. Тему думаю можно закрывать, все получилось. Единственное что: поставил динамическую дату через
(( ничего нового, но вдруг у кого-то аналогичная проблема )) Добавлено через 59 минут
Проверил, время берет правильно. Понятия не имею в чем проблема…
0 |
5870 / 3333 / 1028 Регистрация: 03.11.2009 Сообщений: 9,957 |
|
29.04.2016, 20:13 |
6 |
там вроде бы какое-то ограничение, что защедулить можно только сообщение раз в 5 минут, т.е. если создали шедул не 21:00, то следующее сообщение можно только на 21:05 хотя тогда у вас была бы 214 ошибка… пробуйте +300 Добавлено через 1 минуту
0 |
Dave_ -4 / 26 / 9 Регистрация: 06.03.2015 Сообщений: 209 |
||||
29.04.2016, 21:22 [ТС] |
7 |
|||
По времени все нормально, но… ошибка 100
0 |
5870 / 3333 / 1028 Регистрация: 03.11.2009 Сообщений: 9,957 |
|
29.04.2016, 21:44 |
8 |
Еще раз говорю — попробуйте time.time()+300 к примеру Добавлено через 1 минуту
0 |
Dave_ -4 / 26 / 9 Регистрация: 06.03.2015 Сообщений: 209 |
||||
29.04.2016, 22:29 [ТС] |
9 |
|||
Ну так
Добавлено через 1 минуту
0 |
5870 / 3333 / 1028 Регистрация: 03.11.2009 Сообщений: 9,957 |
|
29.04.2016, 22:31 |
10 |
postsvol = 0 (получается в первом шаге цикла я на 0 умножал) да, именно это я и имел ввиду
0 |
0 / 0 / 0 Регистрация: 27.05.2016 Сообщений: 1 |
|
27.05.2016, 23:08 |
11 |
Привет.
0 |
Main Aim = To collect all the posts on a news outlet (Meduza) that mentions the word coronavirus (коронавирус).
Main Question = Why does the VK API method wall.search in my case stop collecting posts before all the available community pages’ posts are collected?
The API call appears to be working okay as it is returning values from current day based on the query string ‘коронавирус’ (coronavirus) however, in this instance always stopping on 17th of January 2021, which is the 977th post collected.
I checked manually on the community VKontakte page and their earliest post about Coronavirus is 9th February 2020, so it should keep collecting posts till then.
What I’ve tried =
-
Changing the time.sleep() to 180 seconds just in case.
-
Using a different VKontakte page: Rossiyskaya Gazeta. The problem was still there as this time it stopped scraping on May 31st, 2021 which was the 1076th post.
-
Using different versions of the API.
import vk_api
from datetime import datetime
import pandas as pd
import requests
import json
import time
import csv
from pandas import DataFrame
from time import sleep
token = " " #won't share but it works
version = 5.103
data_list = []
query_string = 'коронавирус' #coronavirus
owner_id = -76982440
owners = 1
start_date = 1643673601
finish_date = 1577836801
url = "https://api.vk.com/method/wall.search"
data = requests.get(url).json()
offset = 0
for i in range(20):
r = requests.get('https://api.vk.com/method/wall.search.json', params={
'access_token':token,
'v':version,
'owner_id': owner_id,
'domain': owner_id,
'query': query_string,
'owners_only':owners,
'count':100,
'start_date': start_date,
'finish_date': finish_date,
'offset':offset
})
data_list.append(r.json()['response']['items'])
try:
start_from = r.json()['response']['next_from']
except KeyError:
pass
offset+=100
time.sleep(3)
print("Process Complete")
Main Aim = To collect all the posts on a news outlet (Meduza) that mentions the word coronavirus (коронавирус).
Main Question = Why does the VK API method wall.search in my case stop collecting posts before all the available community pages’ posts are collected?
The API call appears to be working okay as it is returning values from current day based on the query string ‘коронавирус’ (coronavirus) however, in this instance always stopping on 17th of January 2021, which is the 977th post collected.
I checked manually on the community VKontakte page and their earliest post about Coronavirus is 9th February 2020, so it should keep collecting posts till then.
What I’ve tried =
-
Changing the time.sleep() to 180 seconds just in case.
-
Using a different VKontakte page: Rossiyskaya Gazeta. The problem was still there as this time it stopped scraping on May 31st, 2021 which was the 1076th post.
-
Using different versions of the API.
import vk_api
from datetime import datetime
import pandas as pd
import requests
import json
import time
import csv
from pandas import DataFrame
from time import sleep
token = " " #won't share but it works
version = 5.103
data_list = []
query_string = 'коронавирус' #coronavirus
owner_id = -76982440
owners = 1
start_date = 1643673601
finish_date = 1577836801
url = "https://api.vk.com/method/wall.search"
data = requests.get(url).json()
offset = 0
for i in range(20):
r = requests.get('https://api.vk.com/method/wall.search.json', params={
'access_token':token,
'v':version,
'owner_id': owner_id,
'domain': owner_id,
'query': query_string,
'owners_only':owners,
'count':100,
'start_date': start_date,
'finish_date': finish_date,
'offset':offset
})
data_list.append(r.json()['response']['items'])
try:
start_from = r.json()['response']['next_from']
except KeyError:
pass
offset+=100
time.sleep(3)
print("Process Complete")