Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2021, 17:20   #1
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию Отправка картинки на стену ВК

Всем доброго времени суток. Пытаюсь отправить картинку на стену группы ВК.
Но не получается загрузить картинку.
По порядку:
Получаю сервер для загрузки:
Код:
var
  sl  : TStringList;
  res : string;
  JSONObj : TJSONObject;
  serv, photo, hash  : string;
  picStream : TIdMultiPartFormDataStream;
begin
  sl  :=  TStringList.Create;
  // Получаем сервер загрузки
  sl.Add('group_id=111586045');
  sl.Add('access_token='+token);
  sl.Add('v=5.131');
  res := IdHTTP1.Post('https://api.vk.com/method/photos.getWallUploadServer?', sl);
  JSONObj :=  TJSONObject.ParseJSONValue(res) as TJSONObject;
  try
    serv := JSONObj.FindValue('response.upload_url').Value;
    memoLog.Lines.Add(serv);
  except
    ShowMessage ('Не удалось проучить сервер загрузки.' +#13#10+ JSONObj.FindValue('error.error_msg').Value);
    exit;
  end;
Сервер нормально получаю.
Потом загружаю картинку по полученному серверу:
Код:
// Загружаем картинку
  picStream := TIdMultiPartFormDataStream.Create;
  picStream.AddFile('file1', 'D:\myasnaya-muha-1024x709.jpg', 'multipart/form-data');
  res := IdHTTP1.Post(serv, picStream);
  JSONObj :=  TJSONObject.ParseJSONValue(res) as TJSONObject;
  try
    serv := JSONObj.GetValue('server').Value;
    photo := JSONObj.GetValue('photo').Value;
    hash := JSONObj.GetValue('hash').Value;
    memoLog.Lines.Add(serv);
    memoLog.Lines.Add(photo);
    memoLog.Lines.Add(hash);
  except
    ShowMessage ('Не удалось загрузить картинку.' +#13#10+ JSONObj.FindValue('error.error_msg').Value);
    exit;
  end;
  picStream.Free;
Потом делаю сохранение фото:
Код:
  // Сохраняем фото
  sl.Clear;
  sl.Add('group_id=111586045');
  sl.Add('photo='+photo);
  sl.Add('server='+serv);
  sl.Add('hash='+hash);
  sl.Add('access_token='+token);
  sl.Add('v=5.131');
  res := IdHTTP1.Post('https://api.vk.com/method/photos.saveWallPhoto?', sl);
  memoLog.Lines.Add(res);
И вот тут приходит ответ, что типа неправильный токен. Но с этим токеном все остальные API методы работают.
Код:
{"error":{"error_code":5,"error_msg":"User authorization failed: no access_token passed.","request_params":[{"key":"method","value":"photos.saveWallPhoto"},{"key":"oauth","value":"1"}]}}
Может кто подскажет?
Заранее Благодарен.

Последний раз редактировалось FaTaL; 01.09.2021 в 14:54.
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка картинки через сокет Stepan_AVR Работа с сетью в Delphi 4 28.10.2011 16:58
GET, POST, Авторизация и отправка сообщения на стену sashaxD Работа с сетью в Delphi 6 22.09.2011 01:29
Отправка jpeg картинки по TCP. idip Работа с сетью в Delphi 0 04.06.2011 23:11
Отправка картинки post Marsik Работа с сетью в Delphi 4 25.01.2010 13:03
Отправка картинки boostman Работа с сетью в Delphi 3 21.06.2008 17:47