Не совсем сведущ в веб-программировании, поэтому попрошу не принимать близко к сердцу мои, возможно глупые, вопросы :)
В планах написать приложение, которое может работать с личными сообщениями (страницы ВКонтакте, или сообщества), а также с другим функционалом VK API.
На ruSO видел вопросы насчёт авторизации с помощью Java в ВКонтакте, но подробного описания, как с этим работать, я не нашёл. В документации VK есть вся необходимая информация по работе с API, но там в основном JSON-запросы, нужно иметь сервер, который будет принимать и обрабатывать эти запросы, и так далее (https://vk.com/dev/callback_api, https://vk.com/dev/bots_docs)
Но как работать с этим с десктоп-приложения, например, со своего компьютера на Windows, я не понял.
В написании приложения у меня проблем не возникнет, но как работать с VK API и взаимодействовать с ним (отправлять сообщения, или выполнять любые другие действия) я не знаю.
Желательно, чтобы можно было:
Буду рад любым наводкам. Ещё больше буду благодарен, если приведёте пример кода, как авторизовываться и хранить эту авторизацию, как взаимодействовать с API (простейшие примеры).
Для Вашей цели почти наверняка подойдет Java SDK от самих VK. На странице SDK подробная документация (и, в частности, инструкция по получению access-токена пользователя).
Перед тем, как погружаться в работу SDK, лучше прочитать про то, как работает API Вконтакте (это небольшая статья).
Скорее всего, вам нужно именно standalone-приложение. Для них нормально в качестве REDIRECT_URI
использовать https://oauth.vk.com/blank.html
(это даже обязательно для некоторых методов API).
Чтобы access-токен жил вечно, в scope
добавьте значение offline
.
С API без SDK взаимодействуют так:
// формируют url запроса
String url = "https://api.vk.com/method/messages.get?count=20&access_token=<access_token>";
URL obj = new URL(url);
HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
// из документации: параметры могут передаваться как методом GET, так и POST. Если вы будете передавать большие данные (больше 2 килобайт), следует использовать POST.
connection.setRequestMethod("GET");
// посылаем запрос и сохраняем ответ
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// выведет json-ответ запроса
System.out.println(response.toString());
(код get-запроса взял отсюда)
А далее нужно распарсить полученный json
-ответ.
Авторизация — труднее. Там надо открыть окно браузера со сформированным url
, задетектить редирект, распарсить access_token
в новом url
.
Хорошим упражнением будет походить по исходникам Java SDK и разобраться, как реализовано там. Например, исполнение message.get
начинается тут.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
ЗдравствуйтеИзучаю спринг, пытаюсь загрузить фото
Могу ли я так, в одном java-файле два активити прописать? Те надо сделать так, чтобы когда загружался java-файл, он загрузил два активити - один...
Взял лаунчер из этого репозитория: Launcher Minecraft