Работа с API и POST-GET на примере VK.COM

Juror

Client
Регистрация
16.09.2015
Сообщения
21
Благодарностей
7
Баллы
3
... нет ничего лучше POST/GET для уменьшения жора ресурсов шаблонами, ну а API для того и сделано, что бы быстро получать конкретные результаты.

Примером я выбрал именно VK.COM потому что мне он привычней и понятней....

execut0r, Отличная статья. Большое спасибо.

Подскажи плз как в дополнение к твоему ману, использовать в своих проектах API ВКонтакте (vk.com) с помощью библиотеки на платформе .NET.
http://vk.codeplex.com/
https://vknet.github.io/vk/

Упростит ли данная библиотека структуру Вашего шаблона (даст ли это притост скорости/уменьшения нагрузки)?

Буду очень признателен, если раскроете вопрос:
1)внедрения библиотеки (что писать в "директивы Using"),
2)авторизации (как быть с куками?), и
3)постинга комента на стену (пример кода С#)
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
execut0r, Отличная статья. Большое спасибо.

Подскажи плз как в дополнение к твоему ману, использовать в своих проектах API ВКонтакте (vk.com) с помощью библиотеки на платформе .NET.
http://vk.codeplex.com/
https://vknet.github.io/vk/

Упростит ли данная библиотека структуру Вашего шаблона (даст ли это притост скорости/уменьшения нагрузки)?

Буду очень признателен, если раскроете вопрос:
1)внедрения библиотеки (что писать в "директивы Using"),
2)авторизации (как быть с куками?), и
3)постинга комента на стену (пример кода С#)
1. По поводу внедрения библиотек - не мой профиль. Не подскжу.
2. Авторизацию где? В ВК? Так я дал же проект. там все берется.
3. Си Шарп не мое пока. Не особо разбираюсь во всех тонкостях кода, поэтому делаю все проще и топорнее через обычные пост гет экшины.

По поводу приростов производительности и прочего - это надо тестировать. Может и даст, а может и нет.
 
  • Спасибо
Реакции: Juror

Faron

Новичок
Регистрация
15.12.2015
Сообщения
29
Благодарностей
1
Баллы
3
Сейчас тестирую возможность редактирования профиля ВК через пост\гет запросы. Наткнулся на несколько переменных, не могу найти механизм их формирования
1 переменная _tstat она применяется в гет запросе, при переходе на страницу редактирования. К примеру "интересы" или "основное"
2 переменная _rndVer так же в строке гет запроса при переходе на страницу редактирования.
Каждый раз эти значения разные. Не могу найти где они хранятся и передаются. Возможно как то генерируются автономно. Но как? примеры строк
_tstat
1929,106,70,1936,profileEdit
907,1304,72,919,profileEdit
_rndVer
47707
6503
 

Juror

Client
Регистрация
16.09.2015
Сообщения
21
Благодарностей
7
Баллы
3
1. По поводу внедрения библиотек - не мой профиль. Не подскжу.
2. Авторизацию где? В ВК? Так я дал же проект. там все берется.
Что до предоставленных проектов, то я их изучил (в меру своих познаний), вот даже пытаюсь применить частично в своем шаблоне. Авторизация там есть во всех трех шабах, просто в указанной мной библиотеке есть метод авторизации (собственно там реализованы практически все методы API_VK). Вот я и подумал, может подскажешь как их использовать ВМЕСТО стандартных кубиков Zennoposter`а.

PS. Скромность конечно украшает, но судя по твоему навыку, "топор" в твоих руках выглядит скорее как "скальпель". ;-)
 

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
Сейчас тестирую возможность редактирования профиля ВК через пост\гет запросы. Наткнулся на несколько переменных, не могу найти механизм их формирования
1 переменная _tstat она применяется в гет запросе, при переходе на страницу редактирования. К примеру "интересы" или "основное"
2 переменная _rndVer так же в строке гет запроса при переходе на страницу редактирования.
Каждый раз эти значения разные. Не могу найти где они хранятся и передаются. Возможно как то генерируются автономно. Но как? примеры строк
_tstat
1929,106,70,1936,profileEdit
907,1304,72,919,profileEdit
_rndVer
47707
6503
Честно признаюсь - я так и не понял что это и с чем едят.
Практика показала, что "_rndVer" это просто рандомный набор цифр, который вроде как добавляет уникальности запросу.
Та же петрушка с "_tstat".
Лично я использовал просто рандомные цифры в указанных промежутках и никаких проблем
 
  • Спасибо
Реакции: Faron

Leech

Client
Регистрация
29.05.2015
Сообщения
29
Благодарностей
4
Баллы
8
Огромное спасибо за статью.
Не могу понять как после получения токена взять информацию о кол-ве друзей?
Эта команда не возвращает кол-во:
Код:
https://api.vk.com/method/users.get.xml?user_id={-Variable.users_id-}&fields=sex,city,friends,bdate,online_friends&v=5.8&access_token={-Variable.access_token-}&lang=ru
Может вместе с запросом нужно передавать Куки?
 

Lite

Client
Регистрация
17.10.2013
Сообщения
288
Благодарностей
100
Баллы
43
Выше уже было упомянуто - иногда встречается ошибка при авторизации
PHP:
<script type="text/javascript">
var _ua = navigator.userAgent;
var locDomain = 'vk.com'.match(/[a-zA-Z]+\.[a-zA-Z]+\.?$/)[0];
if (/opera/i.test(_ua) || !/msie 6/i.test(_ua) || document.domain != locDomain) {
  document.domain = locDomain;
}
parent.__qlClear();
addEvent = parent.addEvent;
vk = parent.vk;
parent.stManager.add(['notifier.js', 'notifier.css'], function() {
  Notifier = parent.Notifier;

  parent.onLoginFailed(-1);
});
</script>
При этом через браузер авторизация проходит. Единственное упоминание нашел https://github.com/rg3/youtube-dl/issues/3298
p.s. в шабе этот момент есть, но без обработки


Upd
Проблема была в опции "Всегда использовать защищенное соединение (HTTPS)" в настройках безопасности акка вк.
Если опция включена - в Location дополнительно передается параметр _http=1.
не знаю насколько корректное решение:

мне помогло, протестил на паре акков с вкл. опцией https и на обычных.
 
Последнее редактирование:

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Отображаются каракули в снифере. Что я не так делаю?
Скриншот 2016-02-18 14.55.46.png
 

Lite

Client
Регистрация
17.10.2013
Сообщения
288
Благодарностей
100
Баллы
43

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
Тут именно картинка.
По факту же у меня на одной машине почему то тоже везде кракозябры.
Помогает смотреть в закладки - Post Data - для исходящего запроса и Response Content для входящего.
Если с аналазейром не везет - пробуйте fiddler
 

Err0r

Client
Регистрация
17.05.2015
Сообщения
157
Благодарностей
111
Баллы
43
Подскажите как видео загрузить?
Сам запрос получения ссылки сформировал, ссылку для загрузки получаю, а сам видеофайл не отправляет пишет: {"error":"invalid file"}. Пробовал как у Вас в примере с картинкой "закодировать", ничего не вышло, та же ошибка.
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
Простите, а что имеется ввиду под "закодировать"?
Я давно видео загружал и вроде бы там никаких не было проблем с этим, кроме необходимости увеличивать таймаут ожидания исполнения пост запроса.
Вот что пишет нам в документации сам ВК:
https://vk.com/dev/upload_files?f=Загрузка видеозаписей


По ошибке у Вас там говорится что не отправили Вы файл с видео.
Копать нужно в эту сторону - почему не отправился.
 

Err0r

Client
Регистрация
17.05.2015
Сообщения
157
Благодарностей
111
Баллы
43
Простите, а что имеется ввиду под "закодировать"?
прогонял через кубики:


и просто ссылку пробовал вставлять, и таймаут увеличивал ничего не помогает
Значит файл неправильно отправляется, спасибо за ответ, будем копать дальше =)
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
А что в пост запросе показывает?
 

Err0r

Client
Регистрация
17.05.2015
Сообщения
157
Благодарностей
111
Баллы
43
Похоже просто ссылку на файл передает
Код:
Content-Type: multipart/form-data; boundary=C:\Users\Admin\Desktop\1.mp4
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Host: cs506108.vk.me
Content-Length: 34

--C:\Users\Admin\Desktop\1.mp4--
а вот как ее в код загнать я хз, первый раз с таким сталкиваюсь
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
Не верные данные у Вас отправляются.
Почему то в баундари адрес локальный до видеофайла.
Покажите запрос как формируется в самой зенке.
 

Err0r

Client
Регистрация
17.05.2015
Сообщения
157
Благодарностей
111
Баллы
43
сначала отправляю
Код:
https://api.vk.com/method/video.save?name=name&description=opisanie&is_private=0&wallpost=1&privacy_view=all&privacy_comment=all&no_comments=0&repeat=0&access_token={-Variable.token-}&v=5.45
от туда приходят данные с адресом на который загружать, в данном случае такой
Код:
{"response":{"upload_url":"https:\/\/cs50627.vk.me\/upload.exe?act=add_video&mid=35119036&oid=35113036&vid=17787594&fid=0&tag=c281dcd&hash=488085f2143d759ea9f&swfupload=1&api=1","video_id":17177594,"owner_id":351139036,"title":"name","description":"opisanie","access_key":"310d3b2ab49e8309"}}
выпаршиваю, получается
Код:
https://cs506207.vk.me/upload.exe?act=add_video&mid=3511036&oid=35139036&vid=17178594&fid=0&tag=c281c0dhsh=48085f2143d7wfupload=1&api=1
и туда отправляю
 
Последнее редактирование:

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
А в закладку "Дополнительное" вы ничего лишнего не пихали?
 

Err0r

Client
Регистрация
17.05.2015
Сообщения
157
Благодарностей
111
Баллы
43

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
У Вас данные только с локальной ссылкой на видео передаются.
А надо указать еще вебкитбаундари и тип контента.
 

Err0r

Client
Регистрация
17.05.2015
Сообщения
157
Благодарностей
111
Баллы
43
У Вас данные только с локальной ссылкой на видео передаются.
А надо указать еще вебкитбаундари и тип контента.
не подскажите как правильно сделать для видео?
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
Попробуйте так:

Код:
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.avi"
Content-Type: video/mpeg
{-Variable.video_path-}
Подберите подходящий Вам тип контента.
Сontent-Type для Видео:

 
  • Спасибо
Реакции: Crate, CSS и Err0r

Err0r

Client
Регистрация
17.05.2015
Сообщения
157
Благодарностей
111
Баллы
43
Свершилось чудо! Спасибо Вам ОГРОМНОЕ! Все получилось :bp:
 
  • Спасибо
Реакции: execut0r

GeGold

Client
Регистрация
28.09.2015
Сообщения
786
Благодарностей
373
Баллы
63
Подскажите плиззз , хочу заполнить профиль вк пост/гет , беру отсюда данные https://vk.com/dev/fields_2 , политические взгляды,не в какую не заполняет
 

Lite

Client
Регистрация
17.10.2013
Сообщения
288
Благодарностей
100
Баллы
43
Подскажите плиззз , хочу заполнить профиль вк пост/гет , беру отсюда данные https://vk.com/dev/fields_2 , политические взгляды,не в какую не заполняет
https://vk.com/dev/account.saveProfileInfo судя по этой странице, полит. взгляды через апи не получится.
(т.е. надо снифать запросы браузера)
 
  • Спасибо
Реакции: GeGold

GeGold

Client
Регистрация
28.09.2015
Сообщения
786
Благодарностей
373
Баллы
63

markzmanz

Client
Регистрация
22.05.2015
Сообщения
63
Благодарностей
4
Баллы
8
@execut0r не могу справиться с проблемой на шаге получения access токена.

Делаю запрос на токен (соответствующий кубик в вашем проекте), получаю в ответ это вместо токена:

HTTP/1.1 302 Found
Server: Apache
Date: Wed, 09 Mar 2016 08:43:07 GMT
Content-Type: text/html; charset=windows-1251
Content-Length: 20
Connection: keep-alive
X-Powered-By: PHP/3.21924
Pragma: no-cache
Cache-control: no-store
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Location: https://oauth.vk.com/error?err=2
Content-Encoding: gzip

До этого момента все get,post запросы проходят, все переменные заполняются спарсенными данными.

В первом кубике get запроса в разделе получения токена в get запросе приходит ответ со ссылкой:
"location.href = "https://login.vk.com/?act=grant_access и дальше вся ссылка"

Аккаунт свой, приложение client_id своё.
 

Juror

Client
Регистрация
16.09.2015
Сообщения
21
Благодарностей
7
Баллы
3
@execut0r не могу справиться с проблемой на шаге получения access токена.

Делаю запрос на токен (соответствующий кубик в вашем проекте), получаю в ответ это вместо токена:

HTTP/1.1 302 Found
Server: Apache
Date: Wed, 09 Mar 2016 08:43:07 GMT
Content-Type: text/html; charset=windows-1251
Content-Length: 20
Connection: keep-alive
X-Powered-By: PHP/3.21924
Pragma: no-cache
Cache-control: no-store
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Location: https://oauth.vk.com/error?err=2
Content-Encoding: gzip

До этого момента все get,post запросы проходят, все переменные заполняются спарсенными данными.

В первом кубике get запроса в разделе получения токена в get запросе приходит ответ со ссылкой:
"location.href = "https://login.vk.com/?act=grant_access и дальше вся ссылка"

Аккаунт свой, приложение client_id своё.
для разбора, приложите полное содержимое записанное в переменную "get_info" (или скиньте в личку)
 

markzmanz

Client
Регистрация
22.05.2015
Сообщения
63
Благодарностей
4
Баллы
8
для разбора, приложите полное содержимое записанное в переменную "get_info" (или скиньте в личку)
Извиняюсь за беспокойство, всё ожило) Только учусь с post, get работать. Допустил маленькую ошибку в предыдущем экшене с куками.
 

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