C# — Windows Forms Где можно использовать NewsFeed(VK API)


Лучшие библиотеки для работы с VK API на C++, Java, Python и других языках

Работать с API ВКонтакте доводилось многим из нас, и каждый может сказать: работать с ним напрямую неудобно. Разумеется, было написано множество библиотек, предоставляющих удобный интерфейс работы с ним. Их можно и даже нужно использовать для облегчения работы и ускорения разработки. Сегодня tproger представляет подборку библиотек, набравших на GitHub больше всего звездочек и форков, для почти всех самых популярных ныне языков.

Недавно Вконтакте выпустили официальный SDK для работы с API средствами Java. Страница проекта на GitHub содержит множество примеров, вот один из них, для публикации фотографии на странице пользователя:

InTouch — кроссплатформенная библиотека для С#, которая весьма активно развивается. На момент публикации заявлена полная совместимость с версией 5.57 VK API. Вот пример работы с библиотекой:

Или даже короче:

Node.js

Node-vkapi — современная библиотека для JavaScript, основанная на промисах. Она доступна так же в npm:

Вот пример кода, который публикует текст на стену пользователя с помощью node-vkapi:

VK API Lib — небольшая библиотека для работы API, написанная на чистом C++. Из зависимостей требуется только Curl. Библиотека предоставляет базовый класс VK::Client с методами авторизации и выполнения запросов к API.

На основе его вы можете создавать свои классы для работы с разделами. В примере приведен класс VK::Messages . Базовый пример использования:

Python

Python-библиотека, обеспечивающая очень простую работу с API ВКонтакте. Судите сами:

В настоящее время библиотека достаточно активно развивается, однако до этого в её разработке был перерыв примерно на год. Всегда хочется использовать актуальные инструменты, поэтому стоит упомянуть и другую библиотеку для Python. Вот как выглядит загрузка фотографии на сервер с её помощью (комментарии сохранены):

Библиотека на PHP, использующая, по словам автора, «сахалинские технологии», чтобы облегчить труд разработчика. Написана в ООП-стиле. Одна из самых крутых ее фич — генерация на основе запроса на PHP готового кода для специального метода ВК execute.

Пример просмотра последних 200 сообщений:

vkontakte_api — ruby-адаптер для ВКонтакте API. Он позволяет вызывать методы API, загружать файлы на сервера ВКонтакте, а также поддерживает все 3 доступных способа авторизации (при этом позволяя использовать стороннее решение).

Работать с ним можно, например, так:

Простенькая, полностью асинхронная библиотека AnyEvent::VK, выполняющая все запросы по https. По сути является клиентом. Автор рекомендует использовать Async::Chain для комбинирования вложенных колбеков.

Для мобильной разработки

Android (Java)

Еще одна официальная библиотека, на этот раз — для Android. Написана на Java и позволяет сильно упростить работу с API ВКонтакте из этого языка.

Пример отправки запроса:

Windows Phone (C#)

Последняя в этом списке официальная разработка: написанная на C# базовая библиотека для разработки на WP, похожая по функциональности на свои аналоги под Android и iOS.

Отправка запроса на список друзей:

iOS (Objective C)

Официальная библиотека от ВКонтакте, предназначенная для написания приложений под iOS. Написана на Objective-C.

Пример кода с отправкой запроса:

Для хипстеров

На Github есть библиотека и для этого языка — vkrs. Она не слишком активно развивается, но это уже хоть что-то. Вот так она выглядит в деле:

Golang

Как ни странно, была написана обёртка для VK API и на языке Go. Так же, как и остальные, она доступна на Github. Hello World на ней выглядит так:

Если для какого-либо языка вы знаете более актуальную или функциональную библиотеку — пишите в комментарии, мы обязательно обновим статью.

lsreg’s IT blog

Сегодня будет короткая демонстрация работы с API Вконтакте на примере программы для скачивания музыки из контакта.

Создание приложения.

Идем на страницу http://vk.com/developers.php#devstep2, создаем приложение, запоминаем ИД приложения и защищенный ключ.


Авторизация пользователя и разрешение приложению определенного набора действий.

Авторизация подробно описана здесь. Делать ее будем с помощью контрола WebBrowser.

  • VKSettings.AppId — ИД приложения, мы его узнали при создании приложения.
  • VKSettings.Scope — маска необходимых операций. Нам достаточно доступа к аудиозаписям, для этого передаем «8». Подробнее здесь.
  • VKSettings.RedirectUri — «http://oauth.vk.com/blank.html».

После того, как пользователь разрешит приложению нужные операции, браузер будет перенаправлен на страницу, в адресе которой будут данные, нужные для вызовов API.
На событие Navigated вешаем обработчик

Сначала программу я делал на WPF, но в WPF контроль с браузером терял часть ссылки начиная с «#» при редиректе, так что пришлось писать на WinForms.

Получение количества песен.

Для получения количества песен используется метод audio.getCount.
Для вызова метода формируем URL:

К названию метода приписана строка «.xml» — это сделано для получения результата в XML. Без этого был бы JSON.
Дальше получаем результат:

Получение информации о треках.

Теперь используем метод audio.get. Формируем URL:

Аналогичным образом получаем ответ, начинаем парсить. Ответ содержит коллекцию элементов audio, каждый из которых соответствует одному треку. Нас интересуют следующие их узлы:

  • title — Название трека.
  • artist — Исполнитель.
  • album — ИД альбома. Причем я так и не нашел метода API для получения названия альбома.
  • url — Адрес для скачивания трека. Адреса привязаны к IP, так скачивать с них надо сразу же.

Call Back API VK и WindowsForm С#

Задалась целью написать простенького бота для вк на C#. Хочу, чтобы бот был в сообщениях группы. И через них же реагировал на команды и отвечал пользователям. Для этого мне необходимо подключить callback api vk, чтобы бот реагировал на отправленные ему сообщения и на команды.

Подскажите пожалуйста, как я могу подключить callbak api от вк в свою программу на Windows Form? VkNet смотрела, там эти функции не реализованы.

И еще мне не ясен механизм доставки запросов от вк, например, я запущу программу на своем компьютере, как информация будет попадать ко мне в программу, нужно указать, чтобы она какой то конкретный порт прослушивала?

TROCKII БЛОГ

понедельник, 18 июня 2012 г.

C# работа с VK через API

Для создания приложения, которое при работе контактирует с контактом надо заметить, что есть множество вариантов. Можно импортировать готовую библиотеку vkAPI, или написать свой фрагмент кода, который осуществляет взаимодействие с сайтом vk.com. Написание своего будет разумны, если вы не доверяете создателю библиотеки и предполагаете, что она может иметь среди функций что то вредоносное. Также это можно делать уменьшения размера программы, но разница там в несколько килобайт.

Сразу скажу, что через http пытаться авторизовать в контакте бессмысленно и сложно. Это может подойти только для чекеров фэйков и подбора паролей. Но этим заниматься не советую.

Рассмотрим сначала способ без использования библиотек, чтобы понять суть и технологию работы. Делается это при помощи создания окна браузера, где проходит авторизация или проверка на авторизованность аккаунта. Следом сделаем запрос на получение нужных нам данных.

C# — Windows Forms Где можно использовать NewsFeed(VK API)?

В какой-то день я захотел сделать программу для прослушивания музыки vk. Естественно, я начал копаться в документации к api, но ничего дельного я не нашёл. В документации нет ни слова про приложения под ПК. Я перелопатил много информации в интернете, прежде чем смог сделать приложение, в котором есть только авторизация.

Справедливости ради нужно заметить, что путей для авторизации через приложение есть 2: «OAuth-авторизация» и «Прямая авторизация». Я буду рассматривать только OAuth-авторизацию, так как для прямой нужно одобрение модераторов vk.
Начнём.
Для начала создадим контрол бразузера

Пользователя кинет на страницу, где он должен будет авторизоваться в вк и/или дать права приложению.

Затем два раза кликаем на контрол браузера и нас кидает на код.
Ко всем using прописываем

P.S Если кому-то интересно, могу ещё написать уроки по использованию методов api.
Скуп
ВК
RakDroid — прокачка аккаунтов с телефона
VKMusic — вк музыка без браузера
Делаю сайты/софт/стимботов на заказ

Автоматический постинг в ВК wall.post с attachment

Ваяем автоматический постинг в ВК wall.post с attachment (фото) на PHP. Погнали.
В ВКонтакте хоть и есть документация, но с wall.post есть особенности. Для начала регистрируем приложение и оно должно быть Standalone, настройки такие:

Если постить в сообщество, то вы должны иметь на неё админские права, а при создании приложения эту группы выбрать.

Первым делом получим токен (я использовал класс за авторством Dmitriy Nyashkin:

Токен надо получить 1 раз, т.е. два разных скрипта — один только для получения токена, второй — для постинга записей себе или в группу/сообщество.

UPD: если в массиве $result[‘photo’] пусто, вероятно версия php > 5.5, а в ней вместо curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); надо использовать CURLFile, рабочий пример ниже.


И, пожалуй, самое попадалово, что при добавлении фотографии её название (caption) надо прогнать urlencode. Нетривиальная особенность, а в документации про это ничего не сказано (или я слепой).

Цукерберг рекомендует:  Обзор популярных библиотек и фреймворков для PHP

Кратко, порядок такой:

  • Регистрируем приложение (Standalone! — важно)
  • Получаем токен (1 раз)
  • Сначала постим фото и получаем его id
  • А затем уж создаём саму запись с этой картинкой
  • Всё! Радуемся.

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

Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670) или перепиской в ВК.
1000 р./час.

Помогла статья? На поездку на море (Охотское):

Лучшие библиотеки для работы с VK API на C++, Java, Python и других языках

Работать с API ВКонтакте доводилось многим из нас, и каждый может сказать: работать с ним напрямую неудобно. Разумеется, было написано множество библиотек, предоставляющих удобный интерфейс работы с ним. Их можно и даже нужно использовать для облегчения работы и ускорения разработки. Сегодня tproger представляет подборку библиотек, набравших на GitHub больше всего звездочек и форков, для почти всех самых популярных ныне языков.

Недавно Вконтакте выпустили официальный SDK для работы с API средствами Java. Страница проекта на GitHub содержит множество примеров, вот один из них, для публикации фотографии на странице пользователя:

InTouch — кроссплатформенная библиотека для С#, которая весьма активно развивается. На момент публикации заявлена полная совместимость с версией 5.57 VK API. Вот пример работы с библиотекой:

Или даже короче:

Node.js

Node-vkapi — современная библиотека для JavaScript, основанная на промисах. Она доступна так же в npm:

Вот пример кода, который публикует текст на стену пользователя с помощью node-vkapi:

VK API Lib — небольшая библиотека для работы API, написанная на чистом C++. Из зависимостей требуется только Curl. Библиотека предоставляет базовый класс VK::Client с методами авторизации и выполнения запросов к API.

На основе его вы можете создавать свои классы для работы с разделами. В примере приведен класс VK::Messages . Базовый пример использования:

Python

Python-библиотека, обеспечивающая очень простую работу с API ВКонтакте. Судите сами:

В настоящее время библиотека достаточно активно развивается, однако до этого в её разработке был перерыв примерно на год. Всегда хочется использовать актуальные инструменты, поэтому стоит упомянуть и другую библиотеку для Python. Вот как выглядит загрузка фотографии на сервер с её помощью (комментарии сохранены):

Библиотека на PHP, использующая, по словам автора, «сахалинские технологии», чтобы облегчить труд разработчика. Написана в ООП-стиле. Одна из самых крутых ее фич — генерация на основе запроса на PHP готового кода для специального метода ВК execute.

Пример просмотра последних 200 сообщений:

vkontakte_api — ruby-адаптер для ВКонтакте API. Он позволяет вызывать методы API, загружать файлы на сервера ВКонтакте, а также поддерживает все 3 доступных способа авторизации (при этом позволяя использовать стороннее решение).

Работать с ним можно, например, так:

Простенькая, полностью асинхронная библиотека AnyEvent::VK, выполняющая все запросы по https. По сути является клиентом. Автор рекомендует использовать Async::Chain для комбинирования вложенных колбеков.

Для мобильной разработки

Android (Java)

Еще одна официальная библиотека, на этот раз — для Android. Написана на Java и позволяет сильно упростить работу с API ВКонтакте из этого языка.

Пример отправки запроса:

Windows Phone (C#)

Последняя в этом списке официальная разработка: написанная на C# базовая библиотека для разработки на WP, похожая по функциональности на свои аналоги под Android и iOS.

Отправка запроса на список друзей:

iOS (Objective C)

Официальная библиотека от ВКонтакте, предназначенная для написания приложений под iOS. Написана на Objective-C.

Пример кода с отправкой запроса:

Для хипстеров

На Github есть библиотека и для этого языка — vkrs. Она не слишком активно развивается, но это уже хоть что-то. Вот так она выглядит в деле:


Golang

Как ни странно, была написана обёртка для VK API и на языке Go. Так же, как и остальные, она доступна на Github. Hello World на ней выглядит так:

Если для какого-либо языка вы знаете более актуальную или функциональную библиотеку — пишите в комментарии, мы обязательно обновим статью.

C# — Windows Forms Где можно использовать NewsFeed(VK API)?

В какой-то день я захотел сделать программу для прослушивания музыки vk. Естественно, я начал копаться в документации к api, но ничего дельного я не нашёл. В документации нет ни слова про приложения под ПК. Я перелопатил много информации в интернете, прежде чем смог сделать приложение, в котором есть только авторизация.

Справедливости ради нужно заметить, что путей для авторизации через приложение есть 2: «OAuth-авторизация» и «Прямая авторизация». Я буду рассматривать только OAuth-авторизацию, так как для прямой нужно одобрение модераторов vk.
Начнём.
Для начала создадим контрол бразузера

Пользователя кинет на страницу, где он должен будет авторизоваться в вк и/или дать права приложению.

Затем два раза кликаем на контрол браузера и нас кидает на код.
Ко всем using прописываем

P.S Если кому-то интересно, могу ещё написать уроки по использованию методов api.
Скуп
ВК
RakDroid — прокачка аккаунтов с телефона
VKMusic — вк музыка без браузера
Делаю сайты/софт/стимботов на заказ

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

execut0r

Client

Доброго времени суток, друзья!

Очень часто вижу, что многие начинающие Зенщики смотрят в сторону API & POST/GET и правильно делают. Ведь нет ничего лучше POST/GET для уменьшения жора ресурсов шаблонами, ну а API для того и сделано, что бы быстро получать конкретные результаты.

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

Для работы нам понадобится текстовый редактор и сниффер.

Текстовый редактор я использую Notepad ++, а сниффер – HTTP Analyzer. Все это легко гуглится, но если будут какие то проблемы с поиском, то смело пишите в личку, помогу.

Рассматривать текстовый редактор мы не будем, а вот на сниффере остановимся по подробнее.

Я не буду останавливаться на том, что Вы уже активировали данную программу удобным Вам способом или используете триальную версию. У меня уже активирована и поэтому выглядит окно именно так.

Изначально программа всегда запускается на стопе. Нам нужно ее запустить, нажав на Start:

Далее программа начнет перехватывать трафик и группировать его по приложениям. Поэтому я ее и использую. Так как удобней чем у того же фидлера и не нужны танцы с бубнами как с виршарком.

Есть один лайфхак – после первого запуска зайдите в Viewи выберите LocalTime:

Теперь каждый запрос будет отображаться во времени, что очень удобно.

Теперь давайте рассмотрим более внимательно рабочую область программы:

В основном мы будем работать с двумя зонами, которые на картинке выше обозначаются 1 и 2 соответственно. Где показано время сделанного запроса, метод запроса так же указано на картинке.

В зоне 1 у нас время запроса, метод запроса и сам запрос, откуда мы его можем скопировать, но об этом позже.
В зоне 2 у нас будет слева то, что мы отправляем на сервер, а справа то, что получим в ответ от сервера.

Данную программу мы используем для работы с POST/GET запросами. Алгоритм тут простой – сделали в браузере нужное действие – посмотрели что перехватила программа.
Повторили тоже самое в шаблоне. Все. Ничего сложного.
Ну а дальше нужно набивать руку и глаз.

Теперь давайте разберемся как нам работать с API Vk.

Четкое и полное описание работы с API можно найти на сайте — https://vk.com/dev/main

Для работы с методами API нам нужно авторизоваться. Авторизуясь раз, мы получаем токен, который потом можем постоянно использовать для отдельно выбранного аккаунта (пока сами не сменим токен или не забанят аккаунт).

Лично я рекомендую всегда делать Клиентскую авторизацию для Standalone-приложений и мобильных клиентов, так как большинство методов требуют именно ее. Простейшие методы, такие как спарсить что то просто и в открытом доступе, не требует такой сложной авторизации. Да и делается она на много проще.

Вот таким запросом:

client_id и client_secret могут быть от Вашего приложения.
Можете использовать и мои данные, но сами понимаете, вероятность того что что то может пойти не так — огромная. Мало ли кто там в каких целях будет использовать это приложение?
Раз сделали, а потом не волнуетесь. Удобно же!

Вернемся к теме разговора.
Рассматривать мы будем именно клиентскую, так как она требует подтверждение прав от авторизованного аккаунта.
На примере авторизации в vk.com я Вам покажу как работать с HTTP Analyzer, обрабатывая запросы и куки.

Лично я для работы с ВК выделяю отдельно ЮзерАгенты в файл, а так же работаю через прокси. Поэтому все мои шаблоны заточены под них. Прокси использую с привязкой по IP.

Что бы начать с чем либо работать, изначально нужно понять точный порядок действий.
Для авторизации в ВК он будет такой:
1. Открываем vk.com
2. Вводим логин и пароль.
3. Вводим капчу при авторизации, если необходимо.
4. Отправляем данные логина и пароля на сервер ВК.
5. Проверяем — прошла ли авторизация на сервере.


Вроде ничего сложного. Начнем разбираться!

Первым делом в наш шаблон нужно добавить System.Web . Делается это так:
1. Переходите в расширенный редактор.
2. Ищите «Ссылки из GAC»
3. Добавляете (перетаскиваете) на панель внизу (смотрите скрин)
4. Дважды кликаете по появившемуся ярлыку с «книжками»
5. В всплывшем окне жмете «Добавить. » и в следующем вводите System.Web.
6. Выбираете под Вашу систему — 64 или 32 битную. Кликом выбираете.
Все.

Это делается для того, что бы можно было кириллические буквы перевести в читаемые сервером вк данные.

Цукерберг рекомендует:  Создание SPA интенсив для продвинутых веб-разработчиков

Делаем заготовки:
Тут мы берем прокси и помещаем в переменную <- variable . proxy ->

Потом нам нужно взять строчку с данными аккаунта и разделить на логин и пароль.

Работаю в основном с текстовыми данными, а не табличными, так как продают их именно в таком виде.
Далее есть проверка на разделитель, так как у разных продавцов бывает по разному. У кого то разделитель «:«, а у кого то — «;»

Именно в кодировке windows-1251!

Все, на этом этап подготовки завершается и мы начинаем делать саму авторизацию через POST/GET.

Я делаю так:
1. Запускаю HTTP Analyzer
2. Проверяю его работоспособность обновлением страницы в браузере.
3. Удаляю куки и кэш в браузере
4. Произвожу необходимые мне действия (в нашем случае – перехожу на https://vk.com и совершаю авторизацию)

Вот что выдает Аналайзер:

Кучу разной информации. Львиная доля нам не нужна.
Вот тут и нужен навык отбирать то, что нам нужно, а то что нет – удалять.
На первых этапах не советую удалять, так как Вы можете случайно удалить то, что Вам будет необходимо, да и порой кой какие переменные и куки появляются при загрузке изображений. Это я сейчас не про ВК, а в общем о сайтах.

Вот что осталось после очистки не нужных строк (удалил всякие картинки и прочие не нужные джава скрипты):

В итоге у меня получилось 6 действий. Не было капчи и мы ее не разгадывали.
К сожалению, из тех акков, что у меня сейчас есть, не получилось поймать капчу на авторизации. да я и особо не старался. В шаблоне у меня этот момент есть и, те кто заинтересуются как решается капча, могут спокойно это там посмотреть.

Теперь покажу как это все берется, откуда и куда помещается:

Нажимаем право кнопкой мыши на интересующую нас строку и в выпадающем меню выбираем «CopyCell».
К получится, что мы скопируем текст — https://vk.com/
Это очень удобно.

Теперь более подробно рассмотрим как и что мы добавляем в наш экшин.

На картинке ниже, в левой стороне расположена часть из HTTP Analyzer‘а – Закладка «RawStream«, а справа экшин GET запроса из ПроджектМэйкера:

Тут мы это экшин заполняем следующим образом:
URL – мы вставляем то, куда хоти обратиться (в нашем случае это https://vk.com)
Referer – берем из RawStream (на картинке выделили данный момент)
Кодировка windows-1251 (так как работаем с Русскоязычной частью ВК)
Таймаут я советую ставить более 300 на проксях. На хороших или на своем IP можно оставить и 30.
Далее всегда выбираем в «Загружать» — Заголовки и содержимое, так как часто использую проверку — какой пришел ответ от сервера.
И объявляем переменную. Для GET запросов я всегда использую переменную <- variable . get_info ->. Так понятнее для меня. Вы можете называть и обзывать ее как Вам угодно.

Следующая картинка будет из закладки «Дополнительно» того же экшина:

Ставим галочку Редирект, которая означает, что если там есть переход на следующую/другую странице, то он выполнит соответствующий запрос автоматически (по крайней мере я это так понимаю). Иногда нужно отключать! Но так, вообще полезная штука — сокращает кол-во запросов.

В поле UserAgent первой строчкой ставим нашу переменную <- variable . useragents ->, так как мы ранее в эту переменную поместили данные нашего ЮзерАгента.
Далее вставляем выделенный синим текст. По сути, так делаем всегда, при составлении GET и POST запросов.
Дальше там уже появится строка с куками, но ее мы будем помещать в окно Cockie, что ниже.
Вообще я всегда делаю так:
1. Выделяю все (в программе HTTP Analyzer в закладке Raw Stream), что слева до первой строки и копирую в ProjectMaker в экшин (POST или GET) в закладку «Дополнительно«.
2. Вставляю это все в поле UserAgent в закладке «Дополнительно» экшина.
3. В вставленном тексте нахожу строку начинающуюся с Cookie и вырезаю ее в поле ниже, которое так и называется «Cookie:«.
4. Удаляю от туда «Cookie: » из текста и оставляю пока данные куков и возвращаюсь к ЮзерАгенту.
5. Удаляю там строку с ЮзерАгентом, так как вместо него у нас там стоит переменная.
6. Удаляем так же строку Content-Lenght
7. Cтроку с Refferer переносим в первую часть экшина — «Основные» и вставляем в соответствующее поле.
8. Удаляем начало — «Refferer: «.
Если в рефферере используются какие либо параметры, то используем соотвествующие этим параметрам наши переменные. Если таковые имеются. Если нет, то нужно найти заранее, взять и объявить такие переменные.
Так же поступаем и с Cookie. Все должно быть через переменные.

Теперь нам нужно посмотреть, что пришло в ответ.
Смотрим ответ в правой части RawStream:

Как видим, тут мы уже получили наши первые куки.

Вот тут то нам и пригодится текстовый редактор. Я беру все, что лежит в ответе на наш запрос и копирую в текстовый редактор, а просматриваю уже там.

В общем нам тут интересны куки и еще две переменные:

Вот так это будет выглядеть в шаблоне:

Так же делаю простенькую проверку – нашлось ли во ответе на GET запрос ip_h.
Если нет, значит что то не то с проксей или просто подзависло. Если нашлось то все в порядке.

В общем там, как правило все хорошо и те данные, что мы ищем, находятся.

Кстати, наличие remixlhk в данных, в свое время и послужило причиной того, что большинство софта работающего с ВК перестало работать. Именно поэтому, лучше иметь открытый шаблон для ЗенноПостера, где такие казусы быстро можно исправить.

Теперь нам нужно отправить на сервер данные для авторизации – логин и пароль.
Работаем со следующей строкой:

Как видим, это уже POST запрос и мы будем тогда использовать другой экшин.

Как и в предыдущем примере – копируем ячейку и это будет URL’ом нашего будущего POST запроса:

Все то же самое. Так же проставляем Рефферера обязательно!

Данные берем так же из RawStream:

Content-Type: application/x-www-form-urlencoded определяет тип данных.
Именно поэтому urlencoded!

Данные выглядят так (на картинке выше в красном прямоугольнике и с текстовым указанием «ДАННЫЕ«):


Думаю углубляться не стоит как все мы это заменяем? С нашими переменными станет уже так:

Как правило я стараюсь называть переменные как и параметры в запросах — так проще потом вставлять.
Переменные начинающиеся с captcha – это то что мы берем, если есть капча.

В дополнительных настройках экшина у нас будет так:

Не ставил галку у редиректа, так как так и не разобрался, почему иногда не происходит корректный редирект в рамках POST запроса именно при авторизации.

Далее я проверяю наличие куков remixq_
Данные куки появляются при авторизации в аккаунте. Если не появились, значит что то пошло не так. Тогда проверяем на капчу. Если и капча не выскочила, то тут уже проблемы с самим аккаунтом.

Пример авторизации прилагаю.

Данный вид токена (при получение его для правильного standalone-приложения) дает доступ к абсолютно всем функциям, которые имеет аккаунт в вк. Этот вид токена я рекомендую всегда получать, что бы потом не сталкиваться с проблемой, когда упрощенного токена не хватает прав для задуманных Вами действий.

Для получения токена, нам необходимо получить куки, что мы уже имеем делать из первой части и всего два GET –запроса! Хотя, упрощенный — всего один экшин. =)

<- variable .client_id->— Это ID приложения, которое Вам нужно найти или самим создать тут:
https://vk.com/apps?act=manage
Ну или пользуйтесь моим, что я не советую.

Рекомендую создавать сами, так как не везде будут стоять те настройки, что нам нужны. Именно здесь мы делаем открытым приложением и включаем доступ к API, и устанавливаем необходимые права доступа

Настройки приложения можете посмотреть на этом скрине:

Если мы ничего не упустили, то в ответ на GET-запрос придет ссылка для получения токена.

Изначально я всегда проверяю – пришел ли правильный ответ. В данном случае я проверяю есть ли полученном ответе «grant_access_title».

Далее внимательно смотрим, что мы там получили:

И делаем последний запрос, так же без редиректа!

На скрине показан запрос и по вкладкам.
Обратите внимание, что у ВК практикуется такая тема, что на определенные действия используются определенные куки и не стоит, все куки пихать в запрос.
На некоторых запросах данный момент реально критичен!

Если и в этот раз ничего не упустили и не напутали, то в ответе будет нужный нам токен:

Отсюда мы его и парсим.

НА СКРИНЕ ПРИВЕДЕН ПРИМЕР С ПРАВАМИ НА «постинг без HTTPS»!
Отличается он тем, что в конце добавляется параметр – secret.
Более подробно прочитать можете тут — https://vk.com/dev/api_nohttps
Я же не беру такие токены, так как пока не было необходимости получать такой токен и что бы потом не генерировать переменную sig.

Загрузка фотографии в любое место проходит в три этапа:
1. Запрашиваем сервер, куда будем загружать фотографию.
2. Загружаем фотографию.
3. Постим фотографию.

По сути любые действия с загрузками выглядят именно так – в три этапа. Принцип везде один и тот же. Если разберетесь с одним из самых сложных моментов – загрузкой фотографий, то сможете делать все!

И так вернемся к загрузке

Будем рассматривать на примере загрузки фотографии в фотоальбом какой либо группы. Для этого нам нужно кроме токена еще <- variable . group_id ->и

Где и как Вы их брать будете, я не буду рассматривать. В моем примере, данные переменные я ввожу в шаблон через InputSettings:

Цукерберг рекомендует:  Android - Android Studio eRRor

Плюс работы с API заключается в том, что для работы нам нет нужды ни в куках ни в юзерагентах.

Первый запрос будет POST и выглядит он так:

Так как мы загружаем фотографию, то и используем Метод работы с фотографиями.
В частности — https://vk.com/dev/photos.getUploadServer
Со всеми возможными методами можно ознакомиться тут — https://vk.com/dev/methods

Запрос практически всегда формируется так — https://api.vk.com:443/method/ + выбранный метод .

Метод (какой текст присоединять к запросу) берем отсюда:

В данном случае тут присутствуют такие параметры как album_id и group_id. Они обязательны и нужны для правильного формирования запроса.

Строка запроса формируется как – необходимые параметры соединенные через “&” и access_token в конце. Можно и версию API ставить.

В моем случае, album_id и group_id уже заданы, а access_token получен.
Где и как Вы будите брать album_id и group_id это уже решать Вам.

Тип данных – urlencode. Данный тип всегда используется, за исключением случаев, когда что то загружаем !
Так же напомню, что если сомневаетесь в типе данных, то посмотрите какой content-type используется.

В данном случае на скрине у меня почему то стоит загрузить – только содержимое.

Видимо ошибка, так как я использую всегда – Заголовки и содержимое, так удобнее – всегда можно проверить пришел ли ответ или он был пустой.

В общем при правильных данных и рабочем токене мы получим следующий ответ:


Рассматриваем данный ответ.
Есть указание – response и он не пустой.
«aid» и «mid» нас не интересуют это id фотоальбома группы и id анкеты, загружающей фотографию. Да, да. Везде все палится.

Нас тут интересует «upload_url«, его мы и парсим, так же обрабатываем текст – заменяем «\/» на «/» все и помещаем в переменную

Далее приступаем к самому процессу загрузки, выглядит в виде шаблона он так:

Изначально нам нужно подготовить к загрузке фотографию. Я буду использовать фото на компьютере, поэтому беру строку с адресом где находится картинка.
В моем примере я ввел переменную с адресом картинки через входные настройки и он будет такой – D:\new.jpeg

Для начала воспользуемся стандартным экшином Загрузки, куда вставляем переменную с данными пути на компьютере до нашей картинки.

Следом мы делаем POST запрос:

В URL помещаем наш обработанные ранее «upload_url«.
Тип данных уже будет – multipart, так как загружаем файл на сервер.

А в данных мы используем:

И перенесли по аналогии в POST запрос на ЗенноПостер.

Тут просто используется переменная пути до картинки на компьютере, потому что мы ее обработали в предыдущем экшине стандартной загрузки и подготовили к отправке на сервер ВК.

Если все передали правильно, то в ответ должен прейти такой ответ, но с Вашими данными:

Вот тут начинается самое интересное, без поллитры не разберёшься, если ты не кодер.
А статья моя ориентирована все таки на начинающих, поэтому попробую объяснить что к чему.

Из полученного ответа мы выпаршиваем следующие данные – “srever” и “hash”.
aid” и “gid” нам не нужно парсить, так как это ID аккаунта и ID группы соответственно.

Особое внимание необходимо уделить параметру «photos_list«. Выпаршиваем его от “<“ до “>” используя регулярку:

Далее нам нам надо убрать из этой переменной символ – “\”.
Используем стандартный экшин обработки текста и выполняем замену на пустой символ.

Должно получиться так:

И только после этого мы делаем UrlEncode для этой переменно используя код:

Теперь нам нужно сохранить данную фотографию.
Вы спросите, а что же мы делали до этого? Ну, как я понимаю. мы залили фотографию на сервер ВК, но он жадина и нам просто так не хочет отдавать ее URL-адрес.
И на сколько я помню, то тут можно загружать сразу скопром фотки.

Далее мы используем следующий POST запрос:

Тут мы уже используем другой метод – photos.save
Подробнее об этом методе тут — https://vk.com/dev/photos.save

Мы объявляем серверу ВК, что хотим сохранить то. что мы ранее ему отправили, как фотографию.

Использовать мы будет тут следующие параметры:
photos_list
group_id
album_id
caption
server
hash
access_token

В принципе все эти параметры мы уже получили и подготовили, кроме такого параметра как – caption.
Этот параметр очень интересный – это описание фотографии.
Если есть необходимость, можно туда что-нибудь вставить.

В данные экшина POST мы вставим следующий код:

Так как тут мы уже не загружаем ничего с компьютера, то используем тип данных – urlencode!

Если мы все сделали правильно и ничего не упустили, то получаем следующий ответ от ВК:

Данный ответ говорит о том, что мы все удачно загрузили и сервер нам отдал данные где теперь находится наша загруженная фотография/картинка.

Для помещения фотографии в фотоальбом нам нужно знать ID фотографии.
Тут эти данные в ответе эти данные представлены как — «pid«. Его можно сразу спарсить и не мучиться.
У себя в шаблоне я сделал чуть по другому и выпаршивал из photo18348093_391292885, что по сути не правильно, так как требует больше действий. Но не суть.

Мы получили ID фотографии и можем смело идти и размещать фотографию в фотоальбоме группы.

Для этого мы используем следующий POST запрос с использованием метода — wall.post

Подробнее о методе вы можете прочитать тут — https://vk.com/dev/wall.post

Использовать мы будем следующие параметры от туда:
owner_idэто ID группы. Так как это группа, то перед ID ставим минус – “
from_group=1 – этот параметр говорит о том, что будет от лица группы
message – сюда мы можем поместить сообщение

attachmentsсамый главный параметр. Сюда можно через запятую поместить то. Что мы бы хотели прикрепить. Так как мы будем постить фотографию, то нам нужно сюда поставит данные фотографии в виде photo- <- variable . group_id ->_ <- variable . photo_id ->
servicesсервисы для кросспостинга.
Signedподписан ли будет этот пост
access_token

В общем все про параметры расписано на их страницах, читайте внимательно и все будет понятно.

Данный запрос должен разместить фотографию в фотоальбоме группы.

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

Надеюсь я был последователен и ничего не упустил при описании работы с POST/GET и API VK
Если у Вас возникнут какие либо вопросы — задавайте, постараюсь ответить.


Спасибо, что дочитали до конца. =)

Вложения

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее.

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Информационный портал по безопасности

Для новичков. Работа с API ВКонтакте на C#

Автор: admin от 6-11-2020, 14:35, посмотрело: 956

Приветствую тебя, дорогой читатель! Данная статья написана новичком для новичков, в ней описан процесс создания простейшего WindowsForms приложения, которое будет работать с API социальной сети «ВКонтакте». Но это приложение не будет использовать готовые библиотеки (VK.Net и прочие) для обращения к API VK.

  • Получить User Token и выполнять все дальнейшие запросы с помощью него.
  • Получить на вход ID пользователя.
  • Вывести информацию о пользователе с введённым ID.

    Для удобства я буду использовать две библиотеки:

    • xNet — для произведения GET-запросов.
    • JSON.Net — для считывания ответов на эти запросы.

    VkDevelopers , создать новое Standalone приложение, зайти в его настройки и скопировать ApplicationID.

    Можно приступать к созданию приложения, заходим в VisualStudio и создаём новое WindowsForms приложение.

    После подключения библиотек создаём две формы: MainForm (Можно использовать стандартную Form1) и AuthorizationForm. Формы выглядят так:

    Создадим ещё один файл класса. Назовём его VkAPI.

    Приступаем к написанию кода.

    Для начала реализуем получение токена. Для этого в MainForm создадим обработчик нажатия на кнопку Button_GetToken:

    Также отредактируем AuthorizationForm:

    Теперь разберём всё по порядку:

    При нажатии на кнопку открывается AuthorizationForm с Web-браузером, в браузере открывается ссылка:

    Параметр client_id — это ID приложения, полученный нами в начале статьи . После параметра scope перечислены разрешения, которые мы запрашиваем, полный список разрешений можно найти здесь .

    При обновлении страницы мы проверяем содержится ли в адресе access_token, если да, то мы разбиваем адрес и заносим в файл token и ID пользователя, который авторизовывался. После этого AuthorizationForm закрывается. Токен получен!

    Теперь можно приступить к получению и выводу информации о пользователе. Нам нужно получить имя, фамилию, город, страну и фото. Можно получать их запросами, по отдельности, но лучше получить их в одном запросе.

    Отредактируем файл VkAPI.cs:

    При запуске приложение пытается считать токен и ID пользователя:

    Если считывание прошло успешно, то приложение пытается произвести запрос информации о пользователе (Проверка токена на валидность):

    Если запрос успешен, то все поля в форме заполняются и кнопка GetToken становится неактивной:

    Иначе кнопка GetToken активна, и при нажатии на неё срабатывает функция:

    Теперь разберёмся как происходит GET-запрос. Сначала создаётся переменная:

    Далее в неё заносятся параметры:

    И производится GET-запрос:

    Результат обрезается до строки, которую можно конвертировать:

    Происходит конвертация json в словарь:

    Приложение готово! Хоть оно и небольшое, но оно даёт представление о работе с API «ВКонтакте» на C#. Всем спасибо за внимание! Я готов выслушать ваши замечания.

  • Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих