Прочитал
в документации как загрузить фото. Код выполняется и получаю в конце ID фото, но фото не появляется в группе.
Написал свой код:
import requests
# настройки
vk_access_token = "" # токен пользователя
vk_owner_id = "-216030494" # ID группы, куда постим
vk_owner_id_img = "216030494" # ID нужной группы (положительный) для загрузки фото согласно документации
vk_friends_only = "0" # 0 - значит что запись доступна всем пользователям
vk_from_group = "1" # 1 — запись будет опубликована от имени группы
vk_version = "5.131"
# Получение адреса
result = requests.get(f'https://api.vk.com/method/photos.getWallUploadServer?access_token={vk_access_token}&group_id={vk_owner_id_img}&v={vk_version}').json()
upload_url = result['response']['upload_url']
# Передача файла
upload_file = requests.post(upload_url, files={'photo': open('img.jpg', 'rb')}).json() # картинка лежит в том же каталоге, где и программа
save_photo = upload_file['photo']
save_hash = upload_file['hash']
save_server = upload_file['server']
# Сохранение результата
save_file = requests.get(f'https://api.vk.com/method/photos.saveWallPhoto?access_token={vk_access_token}&group_id={vk_owner_id_img}&photo={save_photo}&server={save_server}&hash={save_hash}&v={vk_version}').json()
photo_id = save_file['response'][0]['id']
photo_adress = f'photo{vk_owner_id}_{photo_id}'
# Публикация фотографии
requests.get(f'http://api.vk.com/method/wall.post?access_token={vk_access_token}&owner_id={vk_owner_id}&friends_only={vk_friends_only}&from_group={vk_from_group}&v={vk_version}&&attachments={photo_adress}')
Если посмотреть значение переменной через print(photo_adress), то получим photo-216030494_457240054, но такого файла нет. ВК показывает пустую страницу с надписью: Ошибка доступа
Доступ получал через:
https://oauth.vk.com/authorize?client_id={CLIENT_ID}&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends,notify,photos,wall,email,mail,groups,stats,offline&response_type=token&v=5.131
Как видите, в scope указано - photos. Доступ предоставлен.
Помогите разобраться, где допустил ошибку.