Как зайти в вк через java

от admin

авторизация в ВК (Java)

Я понимаю: вопрос не новый, нашел несколько очень подобных реализаций, но не одна у меня не работает((.. Первая проблема возникает вот где:

во-первых такого заголовка нет, а во-вторых передается предупреждение:

бер. 07, 2016 9:13:13 PM org.apache.http.client.protocol.ResponseProcessCookies processCookies WARNING: Invalid cookie header: «Set-Cookie: remixlang=1; expires=Fri, 03 Mar 2017 14:08:26 GMT; path=/; domain=.vk.com». Invalid ‘expires’ attribute: Fri, 03 Mar 2017 14:08:26 GMT

бер. 07, 2016 9:13:13 PM org.apache.http.client.protocol.ResponseProcessCookies processCookies WARNING: Invalid cookie header: «Set-Cookie: remixlhk=b0535962ec9c2dcee2; expires=Thu, 16 Mar 2017 11:05:21 GMT; path=/; domain=.vk.com». Invalid ‘expires’ attribute: Thu, 16 Mar 2017 11:05:21 GMT

Сервер возвращает код 200

От сервера я получаю вот такие Headers:

Server: Apache Date: Mon, 07 Mar 2016 21:28:09 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive X-Powered-By: PHP/3.21901 Set-Cookie: remixlang=1; expires=Sat, 04 Mar 2017 18:01:50 GMT; path=/; domain=.vk.com Set-Cookie: remixlhk=0e65abac9fd62d58fc; expires=Tue, 28 Feb 2017 17:46:12 GMT; path=/; domain=.vk.com Pragma: no-cache Cache-control: no-store
X-Frame-Options: SAMEORIGIN

Уже опускаются руки.. Подскажите как вообще делается авторизация(вконтакте или любой другой сайт с формой)? Потому что пытаюсь на другом сайте получить заголовок «location» — его нет в ответе. Подскажите алгоритм или где и что почитать именно по практической части?

Ответы (2 шт):

Если используешь spring security, то могу порекомендовать авторизацию через ulogin.ru и использование и интеграцию ulogin и spring_security: https://github.com/dmrzh/ulogin_spring_security

Лучшим выбором модуля спринга, который работает с социальными сетям (не только авторизация) является Spring Social. Он полностью интегрирован с Spring Security. В сети очень много разных примеров как подключать авторизацию через соц сети(с помощью ss), по тем же протоколам OAuth, OAuth2 или Spring Boot’ом, что еще проще. Кроме этого, там не только фб, твиттер и гугл. В примерах можно найти и вк и множество даже самых непопулярных сайтов.

авторизация в ВК (Java)

Я понимаю: вопрос не новый, нашел несколько очень подобных реализаций, но не одна у меня не работает((.. Первая проблема возникает вот где:

во-первых такого заголовка нет, а во-вторых передается предупреждение:

бер. 07, 2016 9:13:13 PM org.apache.http.client.protocol.ResponseProcessCookies processCookies WARNING: Invalid cookie header: «Set-Cookie: remixlang=1; expires=Fri, 03 Mar 2017 14:08:26 GMT; path=/; domain=.vk.com». Invalid ‘expires’ attribute: Fri, 03 Mar 2017 14:08:26 GMT

бер. 07, 2016 9:13:13 PM org.apache.http.client.protocol.ResponseProcessCookies processCookies WARNING: Invalid cookie header: «Set-Cookie: remixlhk=b0535962ec9c2dcee2; expires=Thu, 16 Mar 2017 11:05:21 GMT; path=/; domain=.vk.com». Invalid ‘expires’ attribute: Thu, 16 Mar 2017 11:05:21 GMT

Сервер возвращает код 200

От сервера я получаю вот такие Headers:

Server: Apache Date: Mon, 07 Mar 2016 21:28:09 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive X-Powered-By: PHP/3.21901 Set-Cookie: remixlang=1; expires=Sat, 04 Mar 2017 18:01:50 GMT; path=/; domain=.vk.com Set-Cookie: remixlhk=0e65abac9fd62d58fc; expires=Tue, 28 Feb 2017 17:46:12 GMT; path=/; domain=.vk.com Pragma: no-cache Cache-control: no-store
X-Frame-Options: SAMEORIGIN

Уже опускаются руки.. Подскажите как вообще делается авторизация(вконтакте или любой другой сайт с формой)? Потому что пытаюсь на другом сайте получить заголовок «location» — его нет в ответе. Подскажите алгоритм или где и что почитать именно по практической части?

Как сделать авторизацию с помощью ВКонтакте в десктопном приложении

В данной статье для примера рассмотрено десктоп-приложение на Java, однако общие принципы и схема будут аналогичными для любого другого языка.

Как происходит авторизация?

Авторизация ВКонтакте ничем не отличается от любой другой авторизации через сторонний сервер. Этот процесс отлично описал пользователь StackOverflow qnub:

  1. На сервисе (в данном случае ВК) необходимо зарегистрировать приложение и получить ключ API.
  2. После этого приложение (сайт) могут делать запрос личных данных пользователя у стороннего сервиса через этот самый API, для чего:
    • перенаправить пользователя (браузер пользователя посредством посылки ему HTTP-ответа 302 Redirect) по специально сформированной ссылке на сервис предоставляющий API;
    • пользователь произведёт там какие-то действия, предположительно авторизуется и разрешит доступ к данным.
  3. По завершении действий пользователь будет перенаправлен сторонним сервисом посредством всё того же 302 Redirect на URL переданный в параметрах специально сформированной ссылки.

Шаг первый. Зарегистрировать своё приложение и получить ключ

Этот шаг самый простой. Нужно перейти на страницу ВК для разработчиков: https://vk.com/dev — и нажать на кнопку «Создать приложение». Тип указываем как «Standalone-приложение», имя, естественно, указываем произвольное. После этого в разделе «Мои приложения» появится (что бы вы думали?) ваше приложение. Смело нажимайте «редактировать», затем переходите в раздел «Настройки» — там первой же строкой вы увидите надпись «ID приложения: 1234567». Эти цифры — всё, что вам нужно запомнить для авторизации.

Заметьте, что нет никакого смысла скрывать ID приложения -- он публично показывается, например, при отправке сообщения на стену через это приложение. Ни токены, ни любую другую информацию украсть используя ID нельзя.

Заметьте, что нет никакого смысла скрывать ID приложения — он публично показывается, например, при отправке сообщения на стену через это приложение. Ни токены, ни любую другую информацию украсть, используя ID, нельзя. В общем-то, вы можете использовать даже ID моего приложения (если вам нужно написать небольшой скрипт для себя).

Шаг второй. Формирование специальной ссылки

Далее вам нужно направить пользователя по специально сформированному адресу (её упоминания выделены жирным цветом в первом разделе статьи), где он подтвердит, что хочет разрешить вашему приложению выполнять какие-то действия со своим аккаунтом. Как же формируется эта ссылка?

Читать:
Как убрать гиперссылку в опен офис

Этот процесс подробно описан в документации. Однако, если вы обратились к этой статье, я предполагаю, что вам не хватило информации в документации, и поэтому перескажу всё своими словами. Ссылка имеет следующий вид: хост?параметры . Параметры имеют вид нескольких пар вида ключ=значение разделённых символами & .

Хост всегда остаётся неизменным: https://oauth.vk.com/authorize . Набор параметров так же неизменен:

  • client_id. Здесь стоит указать те самые цифры, которые мы добыли в первом шаге.
  • redirect_uri. Адрес, по которому будет перенаправлен пользователь. Для Standalone приложений это только https://oauth.vk.com/blank.html .
  • display. Этот параметр отвечает за то, как будет показываться страница авторизации. Доступно три варианта: page , popup и mobile . Если не уверены, используйте page .
  • scope. В этом параметре вам следует через запятую перечислить параметры доступа, которые вам необходимы. Полный список доступных параметров приведён на соответствующей странице документации. Обращаю ваше внимание, что можно не указывать вообще ничего и просто не писать этот параметр. Чтобы узнать, какие опции доступа вам нужны посмотрите в документацию методов, которые вы собираетесь использовать.
  • response_type. Указываем token и идём дальше.
  • v. Версия API. Актуальная — 5.59.

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

Шаг третий. Что дальше?

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

Нас интересует TOKEN. Как же направить пользователя на страницу из Java-приложения и как получить адрес страницы, на которую его перенаправит ВК (чтобы извлечь из неё токен)? Существует два способа.

Советский, через браузер по умолчанию

Если вы решили пойти по этому пути, то вы просто открываете браузер системы по умолчанию с полученной выше ссылкой, а пользователю каким-то образом сообщаете, что он должен скопировать из URL токен и вставить его в какое-то поле. Понятно, что у этого метода отвратительный UX, однако его можно реализовать легко и быстро. Вполне подойдёт, если вы пишете приложение для себя — чтобы скачать музыку или получать уведомления. Реализуется он следующим образом:

Буржуазный, через веб-компоненты

Если вы решили пойти по этому пути, то вам потребуется использовать какую-либо стороннюю GUI-библиотеку (или по крайней мере JavaFX), у которой в арсенале есть свой компонент браузера. Над таким бразуером ваша программа будет иметь полную власть, и вы сможете извлечь адрес, на который вас перенаправил ВК, программными средствами. На JavaFX это можно реализовать следующим образом:

Заключение

Таким образом, мы научились получать access token ВКонтакте, с помощью которого можно вызывать методы API. Если эта статья вызовет у сообщества интерес, в следующей статье я опишу, как вызывать те или иные API-методы с помощью токена, как проверять токен на валидность (метод secure.checkToken() , конечно), и напишу какое-нибудь демонстрационное приложение, например, для сохранения всей музыки из плейлиста на компьютер. Кстати, не стоит забывать, что на самом деле всё придумано до нас, и уже есть библиотеки для работы с VK API почти для любого языка. У нас есть подборка, в которой мы постарались собрать лучшие из них.

Если есть какие-то идеи или вопросы — добро пожаловать в комментарии (я их читаю и всем отвечаю). Так же вопросы можно задать в ЛС ВКонтакте.

Name already in use

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Java SDK for VK API

Java library for VK API interaction, includes OAuth 2.0 authorization and API methods. Full VK API features documentation can be found here.

This library has been created using the VK API JSON Schema. It can be found here. It uses VK API version 5.131.

    1.8 or later 2.13 or later

VK Java SDK uses:

    version 4.5.8 version 1.7.26 version 3.6 version 4.3 version 2.6 version 2.8.5

3. Latest release

To add a dependency on VK Java SDK using Maven, use the following:

To add a dependency using Gradle:

4. Prepare for using

Create a new VK application here to use VK Java SDK. Please choose an application type depending on which authorization pattern you need. It should be «Standalone» for Direct Authorization, «Web site» for Authorization Code Flow for server side requests and any of them for Client Credentials Flow.

Fill in the title, confirm the action via SMS and you will be redirected to the application settings page.

You will need your application ID (referenced as API_ID in the documentation), secure key (CLIENT_SECRET) and authorized redirect URI (REDIRECT_URI).

VK Java SDK uses SLF4J for logging. If you want to turn on logging, you must include a plugin that bridges SLF4J with a concrete logging framework. See SLF4J documentation.

Похожие статьи