Здравствуйте.
Данная небольшая заметка должна помочь разработчикам на платформе 1С 8.3 по получению токена доступа для работы с API Onliner.by.
На странице есть пример для PHP и общие данные по получения токена.
Рассмотрим 2 примера:
- Работа стандартными методами платформы 1С 8.3
- Работа с помощью «Microsoft.XMLHTTP»
Прежде чем приступить к примерам необходимо в админке магазина на b2b.onliner.by получить параметры доступа clientId и clientSecret на закладке «Настройка», предварительно там же добавить приложение (например «1С»)
Пример 1.
clientId = ""; //здесь надо указать ИД, полученный в админке магазина http://b2b.onliner.by/login
clientSecret = ""; //здесь надо указать ключ, полученный в админке магазина http://b2b.onliner.by/login
HTTPСоединение = Новый HTTPСоединение(
"b2bapi.onliner.by",,clientId,clientSecret,,,
Новый ЗащищенноеСоединениеOpenSSL);
ГраницаСекций = СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");
ПакетныйЗапросHTTP = Новый HTTPЗапрос;
ПакетныйЗапросHTTP.АдресРесурса = "/oauth/token";
ПакетныйЗапросHTTP.Заголовки["Accept"] = "application/json";
ПакетныйЗапросHTTP.Заголовки["Content-Type"] = "multipart/form-data; boundary=" + ГраницаСекций;
ТелоИзСтроки = "--" + ГраницаСекций + "
|Content-Disposition: form-data; name=""grant_type""
|
|client_credentials
|--" + ГраницаСекций + "--";
ПакетныйЗапросHTTP.УстановитьТелоИзСтроки(ТелоИзСтроки,,ИспользованиеByteOrderMark.НеИспользовать);
ПакетныйОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(ПакетныйЗапросHTTP);
РезультатЗапроса = ПакетныйОтветHTTP.ПолучитьТелоКакСтроку();
Чтение = новый ЧтениеJSON;
Чтение.УстановитьСтроку(РезультатЗапроса);
ДанныеРезультата = ПрочитатьJSON(Чтение, Ложь);
Если ПакетныйОтветHTTP.КодСостояния < 300 Тогда
//Будет выведен токен доступа для работы с API
Сообщить(ДанныеРезультата.access_token);
ИначеЕсли ДанныеРезультата.Свойство("error") Тогда
//Сообщение об ошибке
Сообщить(ДанныеРезультата.error_description);
КонецЕсли;
Пример 2.
ХТТП = Неопределено;
Попытка
ХТТП = Новый COMObject("Microsoft.XMLHTTP");
Исключение
Попытка
ХТТП = Новый COMObject("Msxml2.XMLHTTP");
Исключение
Попытка
ХТТП = Новый COMObject("MSXML2.ServerXMLHTTP");
Исключение
Сообщить("Не могу создать COM объект");
КонецПопытки;
КонецПопытки;
КонецПопытки;
Если ХТТП = Неопределено Тогда
Возврат;
КонецЕсли;
ГраницаСекций = СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");
clientId = ""; //здесь надо указать ИД, полученный в админке магазина http://b2b.onliner.by/login
clientSecret = ""; //здесь надо указать ключ, полученный в админке магазина http://b2b.onliner.by/login
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");
Запись = Новый ЗаписьТекста(ИмяВременногоФайла, КодировкаТекста.UTF8);
Запись.Записать(clientId + ":" + clientSecret);
Запись.Закрыть();
Authorization = Base64Строка(Новый ДвоичныеДанные(ИмяВременногоФайла));
Authorization = Сред(Authorization,5);
Authorization = СтрЗаменить(Authorization, Символы.ВК, "");
Authorization = СтрЗаменить(Authorization, Символы.ПС, "");
НачатьУдалениеФайлов(,ИмяВременногоФайла);
ХТТП.Open("POST", "https://b2bapi.onliner.by/oauth/token", Ложь);
ХТТП.SetRequestHeader("Host", "b2bapi.onliner.by");
ХТТП.SetRequestHeader("Authorization", "Basic " + Authorization);
ХТТП.SetRequestHeader("Accept", "application/json");
ХТТП.SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + ГраницаСекций);
СтрокаЗапроса = "--" + ГраницаСекций + "
|Content-Disposition: form-data; name=""grant_type""
|
|client_credentials
|--" + ГраницаСекций + "--";
ХТТП.Send(СтрокаЗапроса);
Сообщить(ХТТП.Status);
Чтение = новый ЧтениеJSON;
Чтение.УстановитьСтроку(ХТТП.ResponseText);
ДанныеРезультата = ПрочитатьJSON(Чтение, Ложь);
Если ХТТП.Status < 300 Тогда
//Будет выведен токен доступа для работы с API
Сообщить(ДанныеРезультата.access_token);
ИначеЕсли ДанныеРезультата.Свойство("error") Тогда
//Сообщение об ошибке
Сообщить(ДанныеРезультата.error_description);
КонецЕсли;
Функция "ПрочитатьJSON" и тип данных "ЧтениеJSON" доступны только начиная с платформы 1С 8.3.6, для более ранних версий можно воспользоваться обработкой по работе с форматом JSON либо самим написать парсер.
Популярность: 15%