Ошибка, с которой вы сталкиваетесь, связана с недостаточными правами доступа (scopes) для выполнения метода `wall.post`. В данном случае вы видите ошибку с кодом 15 и подкодом 1133, что указывает на то, что ваш токен доступа не имеет необходимых разрешений.
Вот шаги, которые вы можете выполнить, чтобы убедиться, что токен доступа имеет правильные права:
### 1. Получение корректного токена доступа с необходимыми правами
1. **Создайте приложение ВКонтакте**:
- Перейдите на [страницу управления приложениями](https://vk.com/apps?act=manage).
- Создайте новое приложение, если у вас его еще нет.
2. **Выдайте необходимые права доступа**:
- Для публикации на стене пользователя вы должны запрашивать права `wall` и `offline`. Убедитесь, что вы добавили их в запрос.
- Если вы хотите публиковать на стене сообщества, добавьте ещё и `groups`.
3. **Получение токена**:
- Используйте OAuth-авторизацию, чтобы получить токен доступа. Вам нужно будет перенаправить пользователя на адрес:
```
https://oauth.vk.com/authorize?client_id=<YOUR_APP_ID>&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=wall,offline&response_type=token&v=5.131
```
- Замените `<YOUR_APP_ID>` на ID вашего приложения.
- После авторизации пользователь будет перенаправлен по указанному адресу, и вы получите токен в URL.
### 2. Проверка прав доступа токена
После получения токена вы можете проверить его права доступа с помощью метода `account.getProfileInfo`:
```python
import requests
access_token = 'YOUR_ACCESS_TOKEN'
url = 'https://api.vk.com/method/account.getProfileInfo'
params = {
'access_token': access_token,
'v': '5.131'
}
response = requests.get(url, params=params)
data = response.json()
print(data)
```
Если все успешно, перейдите к следующему шагу.
### 3. Корректное использование owner_id
Вам нужно убедиться, что `owner_id` указывает на тот ID, на стене которого вы хотите опубликовать.
- Если это стенка пользователя, `owner_id` должен быть положительным значением (например, `owner_id = user_id`, где `user_id` — это ID пользователя).
- Если это группа (сообщество), `owner_id` должен быть отрицательным значением (например, `owner_id = -group_id`).
### 4. Обновление вашего кода
Вот исправленный блок кода для публикации поста:
```python
# ВК постинг
user_id = 'YOUR_USER_ID' # Укажите свой user_id
version = '5.131'
access_token = 'YOUR_ACCESS_TOKEN' # Ваш новый токен доступа
message = "Это пример поста, опубликованного через Python!"
owner_id = user_id # Или -group_id если публикуете в группе
# URL для запроса
url = "https://api.vk.com/method/wall.post"
# Параметры запроса
params = {
"access_token": access_token,
"v": version,
"owner_id": owner_id,
"message": message,
}
# Выполнение POST-запроса
response = requests.post(url, params=params)
# Обработка ответа
data = response.json()
if "response" in data:
print(f"Пост опубликован! ID поста: {data['response']['post_id']}")
else:
print(f"Ошибка: {data.get('error', 'Неизвестная ошибка')}")
```
Если вы следовали этим шагам и уверены, что ставили правильные права доступа, ваша проблема должна быть решена.