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

06.10.21

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Для работы с 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 зарегистрированного приложения ВК.

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

42700 руб.

03.08.2020    23617    35    24    

27

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    22323    67    52    

42

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

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

12200 руб.

29.08.2025    2054    7    0    

7

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    5649    25    4    

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

Что делать?
3. Sergey_Borisovi4 98 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 98 06.10.21 18:19 Сейчас в теме
(6) Да, немного изменился процесс авторизации. Поправил обработку.
8. romanraspopov 28.10.21 15:29 Сейчас в теме
(7) Сергей, объясните, пожалуйста. Я, видимо, чего-то не понимаю...
Для чего такая работа была проделана, если в ВК есть стандартная опция авторизации в качестве веб-сайта с указанием его домена и с получением ID приложения?
P.S. Изначально заинтересовался статьей, т.к. хочу узнать, как авторизоваться без использования ID приложения в принципе. А в вашем случае, насколько я понял, ID приложения используется.
9. Sergey_Borisovi4 98 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 98 11.11.21 16:55 Сейчас в теме
(10) Судя по описанию там точно так же требуется интерактивное участие пользователя.

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