Подключение к REST API через OAuth протокол из 1С

0. chemezov 47 20.08.18 01:41 Сейчас в теме
В статье описаны варианты подключения И решение граблей по подключению к REST API через протокол OAuth 2.0 из 1С. При разработке такого подключения для получения данных и загрузки в базу 1С я столкнулся с некоторыми проблемами, решил их и хочу поделиться этими наработками.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. bulpi 209 06.09.18 12:50 Сейчас в теме
Автор, просмотрите статью. Похоже, какие-то рисунки должны быть, но их нет и ничего не понятно.
meowmeow; +1 Ответить
2. VZhulanov 4 08.11.18 19:50 Сейчас в теме
Спасибо за примеры
Долго мучался с авторизацией и получением токена
помогла строка
XTTPЗапрос.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

только ее мне и не хватало
chemezov; +1 Ответить
3. user774630 25.03.19 13:08 Сейчас в теме
Большое спасибо!
Для тонкого клиента заработал такой код (без COM-объектов)
МассивПараметров = Новый Массив;
	МассивПараметров.Добавить("client_id=***");	
	МассивПараметров.Добавить("client_secret=***");
	МассивПараметров.Добавить("grant_type=client_credentials");
	МассивПараметров.Добавить("redirect_uri=https://***/oauth/token");
	
	АдресРесурса = "?" + СтрСоединить(МассивПараметров, "&");
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
	
	HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
	
	HTTP = Новый HTTPСоединение("***/oauth/token",,,,,,Новый ЗащищенноеСоединениеOpenSSL,Истина);
	HTTPОтвет = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
	
	СтрокаОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаОтвета);
	
	СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON);
	
	Если СтруктураОтвета.Свойство("access_token") Тогда
		access_token = СтруктураОтвета.access_token;
	КонецЕсли;
Показать
chemezov; +1 Ответить
4. uno-c 214 01.05.19 09:30 Сейчас в теме
access token для google api можно также получать с помощью авторизации сервер-сервер, без редиректов и подтверждения пользователя.
chemezov; +1 Ответить
5. chemezov 47 10.06.19 15:29 Сейчас в теме
Опять пропали две картинки в последнем разделе. Продублирую лучше в комментарии.
Дополнительно:
Помимо этой проблемы стоит так же предусмотреть возможные проблемы при работе в IE. Рекомендую выполнить следующие настройки в своей системе:
1. IE свойства браузера - зайти в вкладку "Дополнительно" и установить флаг «Разрешать запуск активного содержимого файлов на моем компьютере»;

2. Если установлен Касперский - нужно снять флаг с настройки «Внедрять в трафик скрипт взаимодействия с веб-страницами», который находится в "Настройки"(шестеренка) -> "Сеть".
Прикрепленные файлы:
6. deman_ru 20 07.10.19 13:22 Сейчас в теме
Подскажите, а можно ли авторизоваться по token в базе опубликованной на web - сервере с использованием протокола OAuth?
7. chemezov 47 08.10.19 08:30 Сейчас в теме
(6)Для этого нужно писать свой веб клиент. Стандартный такой возможности не предусматривает.
8. Vix 28 12.11.19 15:20 Сейчас в теме
(7)Спасибо за пример, только начинаю разбираться с подобной задачей, разница только в том, что нужно на форме 1С нажимать кнопку авторизации, а открываться будет браузер гугл хром, откуда приходить будут токены, которые нужно встроить в заголовки запроса, а так же можно получить и json. По кнопке выход, допустим удалять токен. Что можете посоветовать к изучению данной задачи?
9. chemezov 47 16.11.19 18:28 Сейчас в теме
(8)Затрудняюсь ответить. Не знаю как из 1С программно открыть Хром
10. user1074814 06.12.19 13:08 Сейчас в теме
Для тех кто на 64 сервере, и выдает ошибку класса на строке с MSScriptControl.ScriptControl
Вам нужно добавить на сервер новую dll, скачать её можно отсюда:
https://tablacus.github.io/scriptcontrol_en.html
11. chemezov 47 24.01.20 03:08 Сейчас в теме
Эх, мдаа. Чудный редактор статьи. Поправил пару слов, теперь все вставки кода пропали...
12. chemezov 47 08.12.20 11:13 Сейчас в теме
Для решения ошибки:
Произошла исключительная ситуация (WinHttp.WinHttpRequest): Не удается установить соединение с сервером

Помог комментарий из https://infostart.ru/1c/articles/1024217/
У меня windows 7 помогло конкретно вот это:
далее еще запустить фикс - делает тоже что описано в этой статье, только автоматом
https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
13. LineykaSBK 5 01.11.22 12:43 Сейчас в теме
Подскажите пож-та. У яндекса так же и у майла при настройки почты в 1С ошибки, мол зайдите и настройте почту для приложения. настраиваю и там и там, в 1С все время говорит что не удалось авторизоваться. Делал пароли и для приложений и пробовал через них и главным паролем пробовал - ни как.
В итоге решил попробовать настроить почту через вэб авторизацию. настроил на стороне почтового сервера все, только вот вопрос, 1С говорит в помощнике, скопируйте этот Callback URL и вставьте http://localhost/oauth2 в соответствующее поле на стороне настройки приложения в почте.
копирую это из помощника настройки подключения почты http://localhost/oauth2, вставляю, пытаюсь и все, ничего дальше не происходит, висит пустое окно.
Я так и не понял что это за ссылка такая у 1С генерируется в поле http://localhost/oauth2
14. chemezov 47 03.11.22 10:15 Сейчас в теме
(13)
Я так и не понял что это за ссылка такая у 1С генерируется в поле http://localhost/oauth2

Боюсь не смогу подсказать. Очень давно я писал эту обработку и в такие детали насколько я помню не углублялся. Я уже успел забыть весь синтаксис JavaScript слишком другие задачи за прошедшее время мне приходилось решать.

Если удастся разобраться, и вы напишите на инфостарте статью с решением этой проблемы, просьба оставить ссылку на вашу статью с решением в комментариях тут. Возможно кому-то в последствии это очень поможет.
Оставьте свое сообщение
Вакансии
Консультант 1С
Москва
зарплата от 80 000 руб. до 150 000 руб.
Полный день

Программист 1С (ERP, УХ, КА 2, УТ 11), удаленно
Москва
зарплата от 160 000 руб.
Полный день

Аналитик 1С
Москва
зарплата от 200 000 руб.
Полный день

Консультант 1С / Специалист поддержки 1C
Екатеринбург
зарплата от 70 000 руб.
Полный день

Технический архитектор 1С
Екатеринбург
зарплата от 200 000 руб.
Полный день