Внимание! Для интеграции вашей учётной системы 1С с сайтом ВКонтакте необходимо создать приложение в разделе разработчиков на сайте ВКонтакте.
Авторизация ВКонтакте из 1С.
Для выполнения запросов к API ВКонтакте необходимо выполнить авторизацию и получить ключ доступа (access_token), который будет использоваться при вызове методов API. При выполнении авторизации необходимо указать ID вашего приложения (см. раздел Создание приложения ВКонтакте выше) и необходимые права доступа к аккаунту ВКонтакте. Права доступа являются строковыми значениями и перечисляются через запятую. Например, если необходимо получить доступ к фотографиям и группам пользователя, то значение прав доступа будет равно "photos,wall". Полный список прав доступа и их значения можно получить в разделе разработчика ВКонтакте по адресу https://vk.com/dev/permissions.
Подробную информацию о получении ключа доступа можно получить в разделе разработчика ВКонтакте по адресу https://vk.com/dev/access_token.
Для выполнения авторизации используется процедура АвторизацияВКонтакте общего модуля vk_ИнтеграцияВККлиент.
Синтаксис:
АвторизацияВКонтакте(<ИдентификаторПриложения>, <ПраваДоступа>, <ОповещениеОЗавершении>)
Параметры:
<ИдентификаторПриложения> (обязательный) - Строка - ID вашего приложения, которому будет представлен доступ (см. раздел Создание приложения ВКонтакте выше).
<ПраваДоступа> (обязательный) - Строка - список прав доступа, перечисленных через запятую.
<ОповещениеОЗавершении> (обязательный) - ОписаниеОповещения - описание процедуры, которая будет вызвана при завершении авторизации. Если авторизация не была выполнена, значение результата закрытия будет Неопределено, иначе Структура:
- ИдентификаторПользователя - Строка - идентификатор авторизованного пользователя (используется для запросов к API);
- КлючДоступа - Строка - ключ доступа (access_token), используется для запросов к API;
- СрокДействияКлюча - Дата - дата окончания срока действия ключа. По истечению этого срока необходимо заново выполнить процедуру авторизации для получения нового ключа. Если установлено право доступа offline (доступ в любое время), то значение равно Неопределено.
Доступность: Клиент.
Описание:
Выполняет открытие формы авторизации пользователя на сайте ВКонтакте. При успешном выполнении авторизации результат выполнения в параметре ОповещениеОЗавершении содержит полученные параметры доступа (идентификатор пользователя, ключ доступа и срок его действия).
Вызов методов API ВКонтакте.
Для вызовов методов API используется функция ВызватьМетодAPI общего модуля vk_ИнтеграцияВККлиентСервер.
Синтаксис:
ВызватьМетодAPI(<ИмяМетода>, <Параметры>, <КлючДоступа>, <ИнформацияОбОшибке>)
Параметры:
<ИмяМетода> (обязательный) - Строка - имя вызываемого метода API.
<Параметры> (обязательный) - Структура - параметры вызываемого метода.
<КлючДоступа> (обязательный) - Строка - ключ доступа, полученный при авторизации (см. раздел Авторизация ВКонтакте из 1С).
<ИнформацияОбОшибке> (необязательный) - Структура - при возникновении ошибки содержит подробную информацию о ней. Если метод выполнен успешно - содержит значение Неопределено.
- КодОшибки - Строка - код ошибки.
- ТекстОшибки - Строка - текст ошибки.
- ОшибкаHTTP - Булево - содержит значение Истина, если ошибка произошла при вызове HTTP-метода (404, 500 и т.п.), например, если сервер недоступен. Если ошибка возникла при выполнении метода ВК API, то будет содержать значение Ложь. Подробнее про коды ошибки API см. https://vk.com/dev/errors.
- Представление - Строка - представление текста ошибки для отображения пользователю.
- ТребуетсяCaptcha - Булево - Истина, если ошибка вызвана требованием ввести Captcha (подробнее см. https://vk.com/dev/captcha_error).
- ПараметрыCaptcha - Структура - если ТребуетсяCaptcha = Истина, то содержит параметры Captcha, используемые для ввода Captcha пользователем:
- Идентификатор - Строка - идентификатор captcha;
- АдресИзображения - Строка - URL адрес изображения captcha;
- КлючДоступа - Строка - ключ доступа к API, используется для повторной отправки запроса после ввода пользователем Captcha;
- ПереданныеПараметры - Массив - содержит массив переданных параметров вызванного метода. Используется для повторной отправки запроса после ввода пользователем Captcha.
Возвращаемое значение:
Структура, Массив - структура или массив со значениями, возвращаемые вызываемым методом. Если во время выполнения метода произошла ошибка, то возвращает значение Неопределено.
Доступность: Клиент, Сервер.
Описание:
Вызывает метод API ВКонтакте и возвращает результат его выполнения. Полную информацию о методах API, их параметрах и возвращаемых значениях см. в руководстве разработчика ВКонтакте по адресу https://vk.com/dev/methods.
Подробнее информацию об обработке ошибки, связанную с требованием ввести captcha см. в разделе Запрос Captcha.
Проверка авторизации пользователя перед вызовом метода API.
Если используется ключ доступа с ограниченным сроком действия (при авторизации в правах доступа отсутствует право offline), то может возникнуть ситуация, когда при отправке запроса срок действия ключа уже закончен. В таком случае метод ВК вернёт соответствующую ошибку. Для упрощения обработки такой ситуации предназначена процедура ПроверитьАвторизациюПользователя общего модуля vk_ИнтеграцияВККлиент.
Синтаксис:
ПроверитьАвторизациюПользователя(<ОповещениеОЗавершении>, <ИдентификаторПриложения>, <ПраваДоступа>, <СрокДействияКлюча>, <АвтообновлениеКлюча>)
Параметры:
<ОповещениеОЗавершении> (обязательный) - ОписаниеОповещения - описание процедуры, которая будет вызвана при завершении проверки. Значение результата проверки - Структура:
- Результат - Строка - результат проверки ключа. Принимает следующие значения:
- КлючДействителен - ключ доступа является действующим;
- КлючНедействителен - срок действия ключа доступа истёк;
- КлючОбновлен - срок действия ключа истёк и был обновлён пользователем.
- ПараметрыДоступа - Структура - если ключ доступа был обновлён пользователем, то содержит обновлённые параметры доступа.
<ИдентификаторПриложения> (обязательный) - Строка - идентификатор приложения, используется для обновления ключа доступа при завершении его срока действия.
<ПраваДоступа> (обязательный) - Строка - права доступа к аккаунту, используется для обновления ключа доступа при завершении его срока действия.
<СрокДействияКлюча> (обязательный) - Дата - проверяемый срок действия ключа.
<АвтообновлениеКлюча> (необязательный) - Булево - если Истина, то пользователю будет предложено обновить ключ доступа в случае истечения его срока действия. Значение по умолчанию: Истина.
Доступность: Клиент.
Описание:
Выполняет проверку наличия действующего ключа доступа к API ВК в клиентском сеансе. Если срок действия ключа истёк, то пользователю будет предложено обновить ключ. По завершении выполнения результат в параметре ОповещениеОЗавершении будет содержать результат проверки. Если значения параметра АвтообновлениеКлюча равно Истина и срок действия ключа истёк, то пользователю будет предложено обновить ключ.
Запрос Captcha.
В API ВКонтакте существует ограничение на вызов однотипных методов. После превышения количественного лимита доступ к конкретному методу может потребовать ввода captcha. Для ввода captcha пользователем предназначена процедура ВвестиCaptchaИПовторитьВызовМетодаAPI общего модуля vk_ИнтеграцияВККлиент.
Синтаксис:
ВвестиCaptchaИПовторитьВызовМетодаAPI(<ПараметрыCaptcha>, <ОповещениеОЗавершении>)
Параметры
<ПараметрыCaptcha> (обязательный) - Структура - параметры captcha, возвращённые с ошибкой при вызове метода API. Подробнее см. раздел Вызов методов API ВКонтакте.
<ОповещениеОЗавершении> (обязательный) - ОписаниеОповещения - описание процедуры, которая будет вызвана при завершении ввода captcha. Если captcha не была введена пользователем, то результат выполнения будет Неопределено, иначе Структура:
- Ответ - Структура - результат выполнения метода API. Если во время выполнения метода возникла ошибка, то содержит значение Неопределено.
- ИнформацияОбОшибке - Структура - если вызов метода выполнен успешно, то содержит значение Неопределено, иначе содержит сведения о возникшей ошибке.
Доступность: Клиент
Описание:
Открывает форму для ввода captcha. После ввода captcha выполняет повторный запрос, приведший к возникновению необходимости ввода captcha.
Отключение аккаунта ВКонтакте.
Для отключения аккаунта можно просто удалить сохранённые при авторизации параметры доступа. Однако из-за использования в процессе авторизации cookie повторное подключение аккаунта ВКонтакте не требует ввода данных , а выполняет вход пользователя, который был авторизован до отключения аккаунта. Таким образом нет возможности сменить пользователя - при авторизации после отключения аккаунта автоматически будет авторизован начальный пользователь. Проблема решается очисткой cookie WebKit, но 1С не предоставляет такого функционала. Выходом из данной ситуации может служить механизм, перенаправляющий пользователя на его страницу ВКонтакте, чтобы он самостоятельно выполнил выход из аккаунта. Для этих целей предназначена процедура ОтключитьАккаунтВКонтакте общего модуля vk_ИнтеграцияВККлиент.
Синтаксис:
ОтключитьАккаунтВКонтакте(<ОповещениеОЗавершении>)
Параметры:
<ОповещениеОЗавершении> (обязательный) - ОписаниеОповещения - описание процедуры, которая будет вызвана при завершении выхода из ВК. Если выход был осуществлён, то результат закрытия равно Истина.
Доступность: Клиент
Описание:
Открывает страницу пользователя ВКонтакте для выхода из аккаунта. Пользователь сам должен выполнить процедуру выхода со своей страницы.
Вспомогательные методы для работы с API ВКонтакте.
Помимо основного метода ВыполнитьМетодAPI в библиотеке существуют дополнительные методы для облегчения загрузки файлов на сайт ВКонтакте, находящиеся в общем модуле vk_ИнтеграцияВККлиентСервер.
Демонстрационная база.
В архиве к публикации помимо библиотеки интеграции с ВК, выполненной в виде расширения присутствует демонстрационная база (DT-файл) с этим расширением и демонстрирующая следующие возможности:
- настройка параметров подключения, получения ключа доступа и сохранение этих настроек;
- размещение записей на стене пользователя или сообщества;
- загрузка фотографий в альбом пользователя или сообщества;
- добавление товаров в раздел "Товары" сообщества.
В обработках по работе с API продемонстрированы примеры вызовов с проверкой наличия действующего ключа и обработкой запроса на ввод captcha.
Настройка параметров подключения и получение ключа доступа.
Работа с аккаунтом ВКонтакте осуществляется в разделе ВКонтакте > Сервис > Настройка подключения.
Для облегчения настройки прав доступа имеется возможность выбора их из списка. Результирующая строка формируется автоматически.
Размещение записи на стене.
Обработка, демонстрирующая размещение записи на стене находится в разделе ВКонтакте > Размещение записи на стене. Помимо размещения записи на стене в обработке демонстрируется получение списка сообществ пользователя для выбора сообщества, в котором будет размещена запись.
Загрузка фотографии в альбом.
Обработка, демонстрирующая загрузку фотографии в альбом находится в разделе ВКонтакте > Загрузка фотографии в альбом. Помимо загрузки фотографии в обработке демонстрируется получение списка сообществ и альбомов пользователя для выбора сообщества и альбома, в которых будет размещена запись.
Добавление товара.
Обработка, демонстрирующая добавление товара в раздел "Товары" сообщества находится в разделе ВКонтакте > Добавление товара. Помимо добавления товара в обработке демонстрируется получение списка сообществ с подключённым разделом "Товары" и категорий товаров для выбора сообщества и категории, в которые будет добавлен товар.
Условия использования.
Исходный код библиотеки интеграции с ВК и демонстрационной базы распространяется под лицензий Apache 2.0. Вы можете свободно использовать, изменять и распространять его, в том числе и в коммерческих целях с обязательным указанием авторства. Подробнее см. текст лицензии http://www.apache.org/licenses/LICENSE-2.0
Прочее.
Вход в демо-базу осуществляется под пользователем "Администратор" без использования пароля.
Для работы с библиотекой требуется версия 1С:Предприятие 8.3.14 и выше. В более ранних версиях не будет работать функционал авторизации пользователя - сайт ВКонтакте будет выдавать ошибку о неподдерживаемой версии браузера.
Работа демонстрационной базы была протестирована на следующих версия 1С:Предприятия 8.3:
- 8.3.14.1993;
- 8.3.16.1224.
Данная публикация является развитием публикации //infostart.ru/public/195276/
Библиотека интеграции с сайтом ВКонтакте доступна на GitHub по ссылке: https://github.com/ltfriend/VkSDKfor1C