Получение токена доступа для работы с API каталога onliner.by

Здравствуйте.

Данная небольшая заметка должна помочь разработчикам на платформе 1С 8.3 по получению токена доступа для работы с API Onliner.by.

На странице есть пример для PHP и общие данные по получения токена.

Рассмотрим 2 примера:

  1. Работа стандартными методами платформы 1С 8.3
  2. Работа с помощью «Microsoft.XMLHTTP»

Прежде чем приступить к примерам необходимо в админке магазина на b2b.onliner.by получить параметры доступа clientId и clientSecret на закладке «Настройка», предварительно там же добавить приложение (например «1С»)
Доступ к API onliner.by

Пример 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 либо самим написать парсер.

Популярность: 14%

Запись опубликована в рубрике Настройка и оптимизация с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.