Авторизация во Вконтакте &НаСервере (без браузера)

06.10.21

Интеграция - WEB-интеграция

Обработка демонстрирует авторизацию и последующее получение токена во Вконтакте прямыми HTTP запросами. Тестировалось на платформе 8.3.17.1386.

Скачать исходный код

Наименование Файл Версия Размер
Авторизация во Вконтакте &НаСервере (без браузера):
.epf 9,07Kb
2
.epf 9,07Kb 2 Скачать

Для работы с API Вконтакте взял за основу данную разработку infostart.ru/public/195276/. Однако, для авторизации и получения API токена там используется браузер, встроенный в платформу, что не подходит для работы на сервере – например, если с сайтом ВК необходимо работать по расписанию регламентным заданием.

Приложенная обработка демонстрирует авторизацию и последующее получение токена во Вконтакте прямыми HTTP запросами. Ниже описан общий принцип работы. На скриншотах используется сниффер трафика Fiddler.

Авторизоваться будем через Implicit Flow - https://vk.com/dev.php?method=implicit_flow_user.

1. Обращаемся GET запросом к странице авторизации https://oauth.vk.com/authorize с передачей соответствующих параметров, указанных в документации.
От первого ответа на запрос нам понадобятся все куки:

 

Сохраним их для дальнейшей вставки в заголовки HTTP запроса.
А так же некоторые параметры для последующей передачи в POST запросе. Спарсим их из HTML кода страницы и так же сохраним.

 

2. Далее отправляем POST запросом на https://login.vk.com/ сохраненные предварительно параметры (№2 на рис.), используя так же сохраненные куки (№1 на рис.).

В ответе получим новую порцию кукисов (№3 на рис.), которую так же сохраняем. Так же сохраняем заголовок Location (№4 на рис.) – туда мы отправим следующий GET запрос. 

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


3. Отправляем GET запрос на полученный ранее адрес из заголовка Location. Отправляемые куки в данном запросе будут те же, как на 2м шаге, но с добавлением параметра «remixq_» полученного в одном из заголовках Set-cookie в предыдущем шаге.
При авторизации через браузер, на этом этапе у нас откроется страница запрашивающая разрешение на доступ вашего приложения в ВК к вашему профилю ВК.

 

 

Из этого ответа нам понадобятся куки с параметрами «remixsid» и «remixua». Причем, обратите внимание, второй передается три раза с разными значениями и разными сроками. Нам понадобится именно второй. Сохраняем их.
Так же из ответа нам необходимо спарсить из HTML кода URL, куда будем отправлять следующий POST запрос, аналогичный тому, как если бы мы в браузере нажала кнопку Разрешить доступ приложению.

 

4. Последний POST запрос отправляем как раз на этот URL. Параметр POST запроса статический «email_denied=0», а вот куки тут будут состоять из параметров h, s, l, p полученных еще на 2м шаге. К ним добавляем наши предыдущие куки, использованные на 3м шаге. Из полученных кук удаляем параметр «remixq» и добавляем параметры «remixsid» и «remixua» опять же полученные на предыдущем шаге.
В итоге строка параметров кукисов будет выглядеть как-то так:
Cookie:  h=1; s=1; l=337429352; p=00ca61ca01b22838ba3f005a9c3ddacd256c394922029fef5da8911ba3***; remixlang=0; remixlhk=78cabec224e90ad***; remixstid=1189672849_qEjrQ9ZDsznMPM2ZpHDJJTsO8pGmMHmxZeTihLef***; remixaudio_show_alert_today=0; remixff=00; remixsid=cec454b171c123ba2009f2e7adeb6067595f6ecf89506134cfc9919511***; remixua=-1%7C-1%7C-1%7C175743***

В ответном заголовке «Location» и будет лежать наш API токен необходимый для дальнейшей работы с сайтом через API.

В обработке указывается ваш e-mail от профиля, пароль и ID зарегистрированного приложения ВК.

вконтакте вк авторизация

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15972    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17969    9    15    

12

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

28000 25200 руб.

28.05.2015    84954    26    51    

50

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    89098    163    216    

319

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25901    9    0    

7
Отзывы
5. svad1 10 25.01.21 18:39 Сейчас в теме
(3)да работает, если нет двухфакторной аутентификации. Если есть, то не получается токен
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. svad1 10 25.01.21 14:19 Сейчас в теме
Скачал вашу обработку, при получении токена возникает исключение
Если СтрНайти(СтраницаРедиректа, "#access_token=") = 0 Тогда
ВызватьИсключение("В URL отсутствует токен!");
КонецЕсли;

Что делать?
3. Sergey_Borisovi4 95 25.01.21 14:56 Сейчас в теме
(1) Только что проверил, у меня все работает. ИД приложения указываете? Оно активно?
Можете прислать в личку учетку, на которой проверяете.
4. svad1 10 25.01.21 15:22 Сейчас в теме
(3) да ид приложения указываю, единственное платформа ниже 8.3.16 может в этом проблема
5. svad1 10 25.01.21 18:39 Сейчас в теме
(3)да работает, если нет двухфакторной аутентификации. Если есть, то не получается токен
2. svad1 10 25.01.21 14:25 Сейчас в теме
не работает, проверил на 2-х аккаунтах вк
6. svad1 10 02.10.21 19:53 Сейчас в теме
в данный момент обработка перестала работать, видимо вк внес изменения. Токен не удается получить!
7. Sergey_Borisovi4 95 06.10.21 18:19 Сейчас в теме
(6) Да, немного изменился процесс авторизации. Поправил обработку.
8. romanraspopov 28.10.21 15:29 Сейчас в теме
(7) Сергей, объясните, пожалуйста. Я, видимо, чего-то не понимаю...
Для чего такая работа была проделана, если в ВК есть стандартная опция авторизации в качестве веб-сайта с указанием его домена и с получением ID приложения?
P.S. Изначально заинтересовался статьей, т.к. хочу узнать, как авторизоваться без использования ID приложения в принципе. А в вашем случае, насколько я понял, ID приложения используется.
9. Sergey_Borisovi4 95 28.10.21 16:20 Сейчас в теме
(8) Пришлите ссылку на описание авторизации в качестве веб-сайта, я посмотрю. Когда я изучал вопрос авторизации, я нашел только вариант с использованием приложения.
Приложение используется для того, чтобы получить токен и обращаться к сайту по API.
Авторизоваться на сайте без использования приложения можно аналогично, как в данной статье, отслеживая какие параметры передаются и какие куки получаются. Но зачем вам просто авторизоваться без приложения, когда общаться с сайтом через API намного удобней, чем просто парся HTML странички.
10. romanraspopov 28.10.21 19:52 Сейчас в теме
(9) Про регистрацию сайта в качестве приложения прочитал вот здесь в п.2:
https://vk.com/dev/first_guide?f=2.%20%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0­%B8%D1%8F%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD­%D0%B8%D1%8F

А вот здесь про "Authorization code flow. Для работы с API от имени пользователя с серверной стороны Вашего сайта":
https://vk.com/dev/access_token?f=1.%20%D0%9A%D0%BB%D1%8E%D1%87%20%D0%B4%D0%BE%D1%81%D1%82%D1%83­%D0%BF%D0%B0%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0­%B0%D1%82%D0%B5%D0%BB%D1%8F

Я сам только приступил к изучению вопроса. Хочется разобраться.

Использование приложения - это лишняя зависимость. А меня интересует скорее имитация обычной работы в браузере, но из другой программы.
11. Sergey_Borisovi4 95 11.11.21 16:55 Сейчас в теме
(10) Судя по описанию там точно так же требуется интерактивное участие пользователя.

Кстати, на сайте VK так и написано "Implicit flow — самый короткий и простой вариант." - так зачем использовать что-то другое, если нет разницы? Приложение вряд ли можно рассматривать, как лишнюю зависимости, оно регистрируется один раз и забывается, и никуда не денется.
12. romanraspopov 11.11.21 21:21 Сейчас в теме
(11) Я просто не совсем понимаю назначение таких приложений, которые один раз создал и забыл. В том числе с точки зрения самой системы (соцсети).
Оставьте свое сообщение