Загрузка фото в VK через API

  • Автор темы Автор темы Nightgarm
  • Дата начала Дата начала

Nightgarm

Client
Регистрация
06.09.2014
Сообщения
23
Реакции
10
Баллы
3
Пытаюсь через api загрузить аватар для группы.
Загрузка главной фотографии на страницу пользователя или сообщества
Загрузка главной фотографии на страницу пользователя или сообщества осуществляется приложением в 4 этапа:

1. С помощью метода photos.getOwnerPhotoUploadServer приложение узнает http-адрес для загрузки фотографий.

2. Приложение формирует POST-запрос на полученный адрес.
Запрос должен содержать поле photo, которое содержит файл с изображением (JPG, PNG, BMP или GIF).

В ответ приложение получает следующие данные в формате JSON:
{"server": '1234', "photo": '1234', "hash": '12345abcde'}


Обратите внимание, что ответ сервера всегда приходит в формате JSON, а поля server, photo и hash в нем содержат строки, внутренний формат которых может изменяться со временем. В частности, строка photo может содержать другой json-объект, который не следует декодировать, разбирать на части или иным образом модифицировать.

3. С помощью вызова метода JS API VK.api photos.saveOwnerPhoto с параметрами server, photo и hash приложение открывает окно предупреждения для сохранения новой фотографии. Если пользователь соглашается, то фотография успешно сохраняется и возвращается параметр photo_src. При этом выполнять 4-й пункт не нужно.
Если данный метод вызывается через прямое обращение к API, то необходимо выполнить дополнительно п. 4 с результатом ответа от сервера.

4. С помощью вызова функции showProfilePhotoBox Flash-контейнера с параметром photo_hash, полученном в п.3, приложение вызывает окно для подтверждения изменения его фотографии.

Фотография будет изменена, если пользователь подтвердит это действие.
Пример приложения для загрузки фотографии пользователя.

Первый этап проходит гладко, адрес для загрузки приходит. На втором этапе когда нужно отправить post-запрос, от сервера всегда приходит одинаковый ответ, даже если не добавлять phote=kartinka.jpg
Код:
Развернуть Свернуть Копировать
{"server":999,"photo":"eyJlcnJvciI6IkVSUl9VUExPQURfRklMRV9OT1RfVVBMT0FERUQ6IG5vIFwiZmlsZVwiIGZpbGUiLCJid2FjdCI6Im93bmVyX3Bob3RvIiwic2VydmVyIjo2MjQ5MzEsIm1pZCI6Mjg2Nzk4MDQwLCJfc2lnIjoiMDAxNjIzNTA0MzY4YzZmYmY1N2ViZDA2MGZhMzg3MzEifQ","mid":286798040,"hash":"7448f93f405dfd5c444f5d4aabb84942","message_code":2,"profile_aid":-6}

Посоветуйте как выйти из ситуации, своих знаний не хватает.
Возможно ли реализовать это через С#?
 
я бьюсь над этим 2 недели. много уважаемых форумчан не нашли чем помочь.
Проблема очень острая и актуальная... Готов платить за помощь, а бы побороть эту печаль...
Знаний тоже не хватает для самостоятельного решения. Есть кусок кода рабочего на С++ его только адаптировать на Зену нада...
 
я бьюсь над этим 2 недели. много уважаемых форумчан не нашли чем помочь.
Проблема очень острая и актуальная... Готов платить за помощь, а бы побороть эту печаль...
Знаний тоже не хватает для самостоятельного решения. Есть кусок кода рабочего на С++ его только адаптировать на Зену нада...

Я находил на хабре интересную статью, но код не получилось запихнуть в зенну. Весьма печально что проблема так долго решается.
Скиньте тот кусок кода, что у вас
 
Я находил на хабре интересную статью, но код не получилось запихнуть в зенну. Весьма печально что проблема так долго решается.
Скиньте тот кусок кода, что у вас
Сори, поздно уже. утром вылезу и отпишу в личку...
 
доброй ночи, нашли ли вы решение ? Тоже маюсь над данной проблемой :(
 
Я сделал загрузку изображений VK API, но немного изращенно. POST-запросом ZP получает URL для загрузки, потом генерирует HTML-файл с формой для загрузки файлов, открывает его и загружает.

awT2tdK10qunMcZ8hQAw.jpg
 
  • Оценить
Реакции: Miko и frion-seo
@Dr.Zlo007
можно упростить, используя полученные в ответе Post-запроса данные уже в исполнении метода photos.saveOwnerPhoto через гет-запрос
10-02-201515-21-55_zpscbd3b32d.png
 
  • Оценить
Реакции: Miko, frion-seo и execut0r
приветствую, а можете залить шаблон ?
 
  • Оценить
Реакции: zortexx и Miko
@frion-seo,@Marcelo,@Dr.Zlo007 помогите пожалуйста с шаблоном, поделитесь :((
 
Кто нить разобрался с данной проблемой?бьюсь уже второй день. Как второй этап сделать..
 
Тоже интересует, как сделать POST запрос из второго шага ))
Кто знает, помогите, плиз!
 
конкретезируйте свои вопросы, так больше будет вероятности что вам помогут.
1. какие права у прилоежения
2. какой именно запрос вы используете и какая именно ошибка в итоге приходит.
3. Я всегда могу помочь по вк за мв.
 
конкретезируйте свои вопросы, так больше будет вероятности что вам помогут.
1. какие права у прилоежения
2. какой именно запрос вы используете и какая именно ошибка в итоге приходит.
3. Я всегда могу помочь по вк за мв.
Нужен шаблон который будет средствами API VK фото из папки в альбом паблика количество фото до 100шт помогите реализовать

1. Все права
2. 1. https://api.vk.com/method/photos.ge...ble.id_grup-}&access_token={-Variable.token-}

Ответ: {"response":{"upload_url":"http:\/\/cs631116.vk.com\/upload.php?act=do_add&mid=69208484&aid=226789340&gid=98664962&hash=4db6af8602c46a9aa20cc3c58eaa2485&rhash=8aafbd2666c95b6999e31e3128cdeb51&swfupload=1&api=1","aid":226789340,"mid":69208484}}

Подскажите что делать дальше?
 
А что в документации вк пишут по этому вопросу?
 
Нужен шаблон который будет средствами API VK фото из папки в альбом паблика количество фото до 100шт помогите реализовать

1. Все права
2. 1. https://api.vk.com/method/photos.ge...ble.id_grup-}&access_token={-Variable.token-}

Ответ: {"response":{"upload_url":"http:\/\/cs631116.vk.com\/upload.php?act=do_add&mid=69208484&aid=226789340&gid=98664962&hash=4db6af8602c46a9aa20cc3c58eaa2485&rhash=8aafbd2666c95b6999e31e3128cdeb51&swfupload=1&api=1","aid":226789340,"mid":69208484}}

Подскажите что делать дальше?
Отсюда Вы парсите upload_url регулярным выражением
Код:
Развернуть Свернуть Копировать
(?<=\{"response":\{"upload_url":").*?(?=",)
Дальше используете замену \/ на / и приводите данный URL к нормальному, стандартному виду.
Выбираете картинку на компьютере, кладете ее локальный адрес в переменную (в моем примере это - {-Variable.img_path-})
Используете экшин загрузки Файлов. Это который такой серый. Вызываетеся таким способом:
Жмете правую кнопку мышки - Выбираете Действия, далее - Браузер - Настройки браузера - Файлы для загрузки на сервер.
Затем используете Пост запрос с типом данных - multipart
Код:
Развернуть Свернуть Копировать
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg
{-Variable.img_path-}
В результате будет ответ с photos_list, откуда Вы парсите регулярным выражением
Код:
Развернуть Свернуть Копировать
(?<="photos_list":").*(?=","aid")
Убираете из этой переменный символ \
Так же парсятся от туда данные переменных server и hash.
И далее используете метод - photos.save
С вышеполученными переменным.
И так делаете 100 раз.
 
Благодарю за развёрнутый ответ
 
Затем используете Пост запрос с типом данных - multipart
Код:
Развернуть Свернуть Копировать
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg
{-Variable.img_path-}
В результате будет ответ с photos_list, откуда Вы парсите регулярным выражением
Код:
Развернуть Свернуть Копировать
(?<="photos_list":").*(?=","aid")
Убираете из этой переменный символ \
Так же парсятся от туда данные переменных server и hash.
И далее используете метод - photos.save
С вышеполученными переменным.
И так делаете 100 раз.

Можете глянуть, что то не получается получить данных.
 
Можете глянуть, что то не получается получить данных.

закрыть границу забыли

------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg

{-Variable.img_path-}
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}--
 
  • Оценить
Реакции: Hlsrnkee и asgard
закрыть границу забыли

------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg

{-Variable.img_path-}
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}--
Спс, после парсинга правда получаю такую строку
{"server":627330,"photo":"[]","hash":"ff0bc0aee88a705f17184b7cd08f37b6"}

без идентификатора photo почему то(
 
Теперь ошибка Security Breach2 вылазить, ни кто не сталкивался с ней?
 
было у меня, точно уже не помню.. неправильный сервер для загрузки фото чтоли я парсил, точнее забыл спарсить и стояло конкретное значение с прошлого раза.
вообщем что-то с сервером загрузки по-моему, вообще ошибка безопасности
 
было у меня, точно уже не помню.. неправильный сервер для загрузки фото чтоли я парсил, точнее забыл спарсить и стояло конкретное значение с прошлого раза.
вообщем что-то с сервером загрузки по-моему, вообще ошибка безопасности
а парсить нужно такой кусок кода сервера загрузки:

или полный код:
 
Я же Вам все четко расписал.
Вот рабочий проект:
https://yadi.sk/d/u1iTDzZqoYBhj
Смотрите и разбирайтесь.
Появляется ошибка в проекте:
i8940996


У меня свой проект аналогичный, только действий там меньше, сейчас не могу решить проблему с ошибкой Security Breach2 когда отправляю запрос на отправку фото на сервер.
 
Появляется ошибка.
i8940996

Учитесь читать ошибки, это пригодится.

Данная ошибка указывает на то, что у Вас (точнее в представленным мной проекте) нету System.Web.
Добавляется данная сборка так:
Ищете слева в "Панели инструментов" строку - "Ссылки из GAC"
Создаете компонент на панели внизу - простым переносом этого пункт меню на панель.
Появится иконка с книжками - "Preferences".
Дважды кликаете на эту иконку и появится всплывающее окно. Далее там Вы кликаете на кнопку "Добавить..."
Затем появится еще одно всплывающее окно под название "Добавить ссылку на сборку".
В этом окне вы в окошке сразу идущим под "Название" вводите нужную сборку, которая указана в ошибке.
В данном случае это "System.Web". Как только Вы начинаете вводить - происходит отбор подходящих сборок.
Я ввел "System.Web.dll" (без ковычек) и у меня вывелось 4 подходящие под описание сборки.
Выбираем 4ую версию, она, как Вы понимаете - новее.
Выбираете подходящую для Вас. У меня 64 битная система Windows, поэтому я выбираю сборку содержащую название - "GAC_64" двойным кликом.
Дальше должно все заработать.

Пояснения указаны на скрине:
https://yadi.sk/i/YgdUv8mpoYY3L
 
  • Оценить
Реакции: Hlsrnkee и asgard
Учитесь читать ошибки, это пригодится.

Данная ошибка указывает на то, что у Вас (точнее в представленным мной проекте) нету System.Web.
Добавляется данная сборка так:
Ищете слева в "Панели инструментов" строку - "Ссылки из GAC"
Создаете компонент на панели внизу - простым переносом этого пункт меню на панель.
Появится иконка с книжками - "Preferences".
Дважды кликаете на эту иконку и появится всплывающее окно. Далее там Вы кликаете на кнопку "Добавить..."
Затем появится еще одно всплывающее окно под название "Добавить ссылку на сборку".
В этом окне вы в окошке сразу идущим под "Название" вводите нужную сборку, которая указана в ошибке.
В данном случае это "System.Web". Как только Вы начинаете вводить - происходит отбор подходящих сборок.
Я ввел "System.Web.dll" (без ковычек) и у меня вывелось 4 подходящие под описание сборки.
Выбираем 4ую версию, она, как Вы понимаете - новее.
Выбираете подходящую для Вас. У меня 64 битная система Windows, поэтому я выбираю сборку содержащую название - "GAC_64" двойным кликом.
Дальше должно все заработать.

Пояснения указаны на скрине:
https://yadi.sk/i/YgdUv8mpoYY3L
Спасибо!) оказывается вся проблема была в в отсутствии System.Web
 
Пробовал несколько раз загрузить фото но появляется ошибка - Неверный хэш.
{"error":{"error_code":121,"error_msg":"Invalid hash"
 
Пробовал несколько раз загрузить фото но появляется ошибка - Неверный хэш.
Значит не верный Хэш.
Специально загрузил сейчас тот проект что скидывал выше - вставил туда токен, айди группы и и альбома, к которым имеет доступ аккаунт у которого я взял токен..
Все работает без проблем.
 
Значит не верный Хэш.
Специально загрузил сейчас тот проект что скидывал выше - вставил туда токен, айди группы и и альбома, к которым имеет доступ аккаунт у которого я взял токен..
Все работает без проблем.
У меня проблемы с Хеш даже через загрузку веб версии
даже поддержка ВК не знает в чем причина)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)