Публикация на стене группы ВКонтакте методом wall.post

На текущий момент публикация на стене пользователя (или в группе) в соцсети ВКонтакте является достаточно распространённой задачей. Существует множество сторонних библиотек от пользователей, «запиливших свой велосипед» для решения этой задачи. Но есть один нюанс, который может запросто поставить вас в ступор, когда после успешных попыток опубликовать записи на стене пользователя, вы вдруг не сможете этого сделать на стене группы, хотя (казалось бы) все условия из официальной документации соблюдены чётко. Злосчастная ошибка error_code = 214 может слегка подпортить вам жизнь...


Да чего далеко ходить: если мы хотим организовать публикацию на стене пользователя вконтакте (рассмотрим частный случай: пользователь и есть владелец Standalone приложения), то открываем официальную документацию, находим там описание нужного нам метода wall.post, делаем всё по инструкции и если руки растут из плеч, то всё начинает сразу же работать как по часам.

Я не буду описывать предшествующие этому шаги (добавление Standalone приложения, получения appId и секретного ключа, получения access_token'а - это уже неоднократно и подробно расписывалось до меня, google и яндекс знают эту тему «на зубок»), вы уже наверняка реализовали их сами.

А теперь то, ради чего и писалась эта заметка: публикация на стене группы вконтакте.

В «прекрасной» документации метода wall.post всё достаточно подробно описано, чтобы можно было спокойно реализовать публикацию на стене группы через созданное нами буквально 10 минут назад приложение. Ключевым фактором в этом методе является указание параметра: owner_id - идентификатор пользователя или сообщества, на стене которого должна быть опубликована запись. Казалось бы, в чём проблема? Указываем вместо ID-пользователя, на стене которого мы только что успешно публиковали записи, ID-группы и пробуем!.. А вот тут-то нас ждёт сюрприз в виде вот такой ошибки: error_code = 214, error_msg = Access to adding post denied: access to the wall is closed.

Стоп! Первым делом проверяем, все ли необходимые scope=friends,wall,groups,offline мы указали при получении access_token'а? Ну тут всё верно. Кстати, чтобы вы не искали отдельно (если до этого момента ещё не нашли), вот ссылка для получения токена:

https://oauth.vk.com/authorize?client_id=<ИД вашего приложения>&scope=friends,wall,groups,offline&redirect_uri=https://oauth.vk.com/blank.html&response_type=token

Так вот... Нигде в документации не сказано, что для того, чтобы опубликовать запись на стене группы вконтакте методом wall.post нужно указать ID этой группы в виде owner_id: –123456, где 123456 - это номер соответствующей группы. Как только вы добавите этот «минус» к идентификатору группы, у вас скорее всего всё сразу же заработает, как заработало в моём случае.

Вот такие вот они издержки «недописок» официальной документации ВКонтакте.