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

  • Автор темы Автор темы execut0r
  • Дата начала Дата начала
... нет ничего лучше POST/GET для уменьшения жора ресурсов шаблонами, ну а API для того и сделано, что бы быстро получать конкретные результаты.

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


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

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

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

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

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

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

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

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

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

Что до предоставленных проектов, то я их изучил (в меру своих познаний), вот даже пытаюсь применить частично в своем шаблоне. Авторизация там есть во всех трех шабах, просто в указанной мной библиотеке есть метод авторизации (собственно там реализованы практически все методы API_VK). Вот я и подумал, может подскажешь как их использовать ВМЕСТО стандартных кубиков Zennoposter`а.

PS. Скромность конечно украшает, но судя по твоему навыку, "топор" в твоих руках выглядит скорее как "скальпель". ;)
 
Сейчас тестирую возможность редактирования профиля ВК через пост\гет запросы. Наткнулся на несколько переменных, не могу найти механизм их формирования
1 переменная _tstat она применяется в гет запросе, при переходе на страницу редактирования. К примеру "интересы" или "основное"
2 переменная _rndVer так же в строке гет запроса при переходе на страницу редактирования.
Каждый раз эти значения разные. Не могу найти где они хранятся и передаются. Возможно как то генерируются автономно. Но как? примеры строк
_tstat
1929,106,70,1936,profileEdit
907,1304,72,919,profileEdit
_rndVer
47707
6503
Честно признаюсь - я так и не понял что это и с чем едят.
Практика показала, что "_rndVer" это просто рандомный набор цифр, который вроде как добавляет уникальности запросу.
Та же петрушка с "_tstat".
Лично я использовал просто рандомные цифры в указанных промежутках и никаких проблем
 
  • Спасибо
Реакции: Faron
Огромное спасибо за статью.
Не могу понять как после получения токена взять информацию о кол-ве друзей?
Эта команда не возвращает кол-во:
Код:
Развернуть Свернуть Копировать
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
Может вместе с запросом нужно передавать Куки?
 
Выше уже было упомянуто - иногда встречается ошибка при авторизации
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. в шабе этот момент есть, но без обработки
7x34x.png


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

мне помогло, протестил на паре акков с вкл. опцией https и на обычных.
 
Последнее редактирование:
Тут именно картинка.
По факту же у меня на одной машине почему то тоже везде кракозябры.
Помогает смотреть в закладки - Post Data - для исходящего запроса и Response Content для входящего.
Если с аналазейром не везет - пробуйте fiddler
 
Подскажите как видео загрузить?
Сам запрос получения ссылки сформировал, ссылку для загрузки получаю, а сам видеофайл не отправляет пишет: {"error":"invalid file"}. Пробовал как у Вас в примере с картинкой "закодировать", ничего не вышло, та же ошибка.
 
Простите, а что имеется ввиду под "закодировать"?
Я давно видео загружал и вроде бы там никаких не было проблем с этим, кроме необходимости увеличивать таймаут ожидания исполнения пост запроса.
Вот что пишет нам в документации сам ВК:
https://vk.com/dev/upload_files?f=Загрузка видеозаписей


По ошибке у Вас там говорится что не отправили Вы файл с видео.
Копать нужно в эту сторону - почему не отправился.
 
Простите, а что имеется ввиду под "закодировать"?
прогонял через кубики:
8g5U2Xj.png


и просто ссылку пробовал вставлять, и таймаут увеличивал ничего не помогает
Значит файл неправильно отправляется, спасибо за ответ, будем копать дальше =)
 
А что в пост запросе показывает?
 
Похоже просто ссылку на файл передает
Код:
Развернуть Свернуть Копировать
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--
а вот как ее в код загнать я хз, первый раз с таким сталкиваюсь
 
Не верные данные у Вас отправляются.
Почему то в баундари адрес локальный до видеофайла.
Покажите запрос как формируется в самой зенке.
 
сначала отправляю
Код:
Развернуть Свернуть Копировать
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
и туда отправляю
VKnME2P.png
 
Последнее редактирование:
А в закладку "Дополнительное" вы ничего лишнего не пихали?
 
У Вас данные только с локальной ссылкой на видео передаются.
А надо указать еще вебкитбаундари и тип контента.
 
У Вас данные только с локальной ссылкой на видео передаются.
А надо указать еще вебкитбаундари и тип контента.
не подскажите как правильно сделать для видео?
 
Попробуйте так:

Код:
Развернуть Свернуть Копировать
------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
Свершилось чудо! Спасибо Вам ОГРОМНОЕ! Все получилось :bp:
 
  • Спасибо
Реакции: execut0r
Подскажите плиззз , хочу заполнить профиль вк пост/гет , беру отсюда данные https://vk.com/dev/fields_2 , политические взгляды,не в какую не заполняет
 
Подскажите плиззз , хочу заполнить профиль вк пост/гет , беру отсюда данные https://vk.com/dev/fields_2 , политические взгляды,не в какую не заполняет
https://vk.com/dev/account.saveProfileInfo судя по этой странице, полит. взгляды через апи не получится.
(т.е. надо снифать запросы браузера)
 
  • Спасибо
Реакции: GeGold
@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 своё.
 
@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" (или скиньте в личку)
 
для разбора, приложите полное содержимое записанное в переменную "get_info" (или скиньте в личку)
Извиняюсь за беспокойство, всё ожило) Только учусь с post, get работать. Допустил маленькую ошибку в предыдущем экшене с куками.
 

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