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

Nightgarm

Client
Регистрация
06.09.2014
Сообщения
22
Благодарностей
8
Баллы
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}
Посоветуйте как выйти из ситуации, своих знаний не хватает.
Возможно ли реализовать это через С#?
 

APXOHT

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

Nightgarm

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

APXOHT

Client
Регистрация
27.12.2013
Сообщения
879
Благодарностей
189
Баллы
43
Я находил на хабре интересную статью, но код не получилось запихнуть в зенну. Весьма печально что проблема так долго решается.
Скиньте тот кусок кода, что у вас
Сори, поздно уже. утром вылезу и отпишу в личку...
 

Marcelo

Client
Регистрация
16.12.2014
Сообщения
109
Благодарностей
17
Баллы
18
доброй ночи, нашли ли вы решение ? Тоже маюсь над данной проблемой :(
 

Dr.Zlo007

Client
Регистрация
14.06.2013
Сообщения
22
Благодарностей
2
Баллы
3
Я сделал загрузку изображений VK API, но немного изращенно. POST-запросом ZP получает URL для загрузки, потом генерирует HTML-файл с формой для загрузки файлов, открывает его и загружает.

 
  • Спасибо
Реакции: Miko и frion-seo

Marcelo

Client
Регистрация
16.12.2014
Сообщения
109
Благодарностей
17
Баллы
18
@Dr.Zlo007
можно упростить, используя полученные в ответе Post-запроса данные уже в исполнении метода photos.saveOwnerPhoto через гет-запрос
 
  • Спасибо
Реакции: Miko, frion-seo и execut0r

frion-seo

Client
Регистрация
27.02.2011
Сообщения
506
Благодарностей
451
Баллы
63
приветствую, а можете залить шаблон ?
 
  • Спасибо
Реакции: zortexx и Miko

Miko

Новичок
Регистрация
29.04.2015
Сообщения
1
Благодарностей
0
Баллы
1
@frion-seo,@Marcelo,@Dr.Zlo007 помогите пожалуйста с шаблоном, поделитесь :((
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 340
Благодарностей
298
Баллы
83

San

Новичок
Регистрация
12.03.2015
Сообщения
8
Благодарностей
3
Баллы
3
Кто нить разобрался с данной проблемой?бьюсь уже второй день. Как второй этап сделать..
 

dremniy

Client
Регистрация
01.05.2014
Сообщения
34
Благодарностей
17
Баллы
8
Тоже интересует, как сделать POST запрос из второго шага ))
Кто знает, помогите, плиз!
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
конкретезируйте свои вопросы, так больше будет вероятности что вам помогут.
1. какие права у прилоежения
2. какой именно запрос вы используете и какая именно ошибка в итоге приходит.
3. Я всегда могу помочь по вк за мв.
 

graf777

Client
Регистрация
06.03.2014
Сообщения
2
Благодарностей
0
Баллы
1
конкретезируйте свои вопросы, так больше будет вероятности что вам помогут.
1. какие права у прилоежения
2. какой именно запрос вы используете и какая именно ошибка в итоге приходит.
3. Я всегда могу помочь по вк за мв.
Нужен шаблон который будет средствами API VK фото из папки в альбом паблика количество фото до 100шт помогите реализовать

1. Все права
2. 1. https://api.vk.com/method/photos.getUploadServer?album_id={-Variable.album_id-}&group_id={-Variable.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}}

Подскажите что делать дальше?
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
А что в документации вк пишут по этому вопросу?
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
259
Благодарностей
270
Баллы
63
Нужен шаблон который будет средствами API VK фото из папки в альбом паблика количество фото до 100шт помогите реализовать

1. Все права
2. 1. https://api.vk.com/method/photos.getUploadServer?album_id={-Variable.album_id-}&group_id={-Variable.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 раз.
 

graf777

Client
Регистрация
06.03.2014
Сообщения
2
Благодарностей
0
Баллы
1
Благодарю за развёрнутый ответ
 

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Затем используете Пост запрос с типом данных - 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 раз.
Можете глянуть, что то не получается получить данных.
 

dremniy

Client
Регистрация
01.05.2014
Сообщения
34
Благодарностей
17
Баллы
8
Можете глянуть, что то не получается получить данных.
закрыть границу забыли

------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

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
закрыть границу забыли

------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 почему то(
 

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Теперь ошибка Security Breach2 вылазить, ни кто не сталкивался с ней?
 

dremniy

Client
Регистрация
01.05.2014
Сообщения
34
Благодарностей
17
Баллы
8
было у меня, точно уже не помню.. неправильный сервер для загрузки фото чтоли я парсил, точнее забыл спарсить и стояло конкретное значение с прошлого раза.
вообщем что-то с сервером загрузки по-моему, вообще ошибка безопасности
 

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
было у меня, точно уже не помню.. неправильный сервер для загрузки фото чтоли я парсил, точнее забыл спарсить и стояло конкретное значение с прошлого раза.
вообщем что-то с сервером загрузки по-моему, вообще ошибка безопасности
а парсить нужно такой кусок кода сервера загрузки:
или полный код:
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
259
Благодарностей
270
Баллы
63
Я же Вам все четко расписал.
Вот рабочий проект:
https://yadi.sk/d/u1iTDzZqoYBhj
Смотрите и разбирайтесь.
 
  • Спасибо
Реакции: alekwuy

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Я же Вам все четко расписал.
Вот рабочий проект:
https://yadi.sk/d/u1iTDzZqoYBhj
Смотрите и разбирайтесь.
Появляется ошибка в проекте:


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

execut0r

Client
Регистрация
12.03.2014
Сообщения
259
Благодарностей
270
Баллы
63
Появляется ошибка.
Учитесь читать ошибки, это пригодится.

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

Пояснения указаны на скрине:
https://yadi.sk/i/YgdUv8mpoYY3L
 
  • Спасибо
Реакции: Hlsrnkee и asgard

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Учитесь читать ошибки, это пригодится.

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

Пояснения указаны на скрине:
https://yadi.sk/i/YgdUv8mpoYY3L
Спасибо!) оказывается вся проблема была в в отсутствии System.Web
 

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Пробовал несколько раз загрузить фото но появляется ошибка - Неверный хэш.
{"error":{"error_code":121,"error_msg":"Invalid hash"
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
259
Благодарностей
270
Баллы
63
Пробовал несколько раз загрузить фото но появляется ошибка - Неверный хэш.
Значит не верный Хэш.
Специально загрузил сейчас тот проект что скидывал выше - вставил туда токен, айди группы и и альбома, к которым имеет доступ аккаунт у которого я взял токен..
Все работает без проблем.
 

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Значит не верный Хэш.
Специально загрузил сейчас тот проект что скидывал выше - вставил туда токен, айди группы и и альбома, к которым имеет доступ аккаунт у которого я взял токен..
Все работает без проблем.
У меня проблемы с Хеш даже через загрузку веб версии
даже поддержка ВК не знает в чем причина)
 

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