К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Запрос на получения токена подключения Сбер (Авторизация)

Гость
0 - 24.10.2022 - 20:14
Всем привет!
Тем, кто знаком с авторизацией с Сбер,
подскажите, как получить токен!

Код:
/////////////////////////////////////////////////////
UID = Новый УникальныйИдентификатор();
СтрокаUID = СтрЗаменить(Строка(UID), "-", "");
ID = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
Secret = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
IDSecret64 = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ID + ":" + Secret));
Authorization = "Basic " + IDSecret64;

ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаФайл("D:\certificate_XXX.p12", "XXX"));
HTTPСоединение = Новый HTTPСоединение("api.sberbank.ru", 8443,,,,, ssl);
ТелоЗапроса = "grant_type=client_credentials";
ТелоЗапроса = ТелоЗапроса + "&scope=https%3A%2F%2Fapi.sberbank.ru%2Fqr%2Forder .create";
ТекстЗапроса = "/ru/prod/tokens/v2/oauth";

HTTPЗапрос = Новый HTTPЗапрос(ТекстЗапроса);
HTTPЗапрос.АдресРесурса = ТекстЗапроса;
HTTPЗапрос.Заголовки.Вставить("Authorization", Authorization);
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("X-IBM-Client-Id", ID);
HTTPЗапрос.Заголовки.Вставить("RqUID", СтрокаUID);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded" );

HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
ОтветСтрока = Результат.ПолучитьТелоКакСтроку();

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ОтветСтрока);
Ответ = ПрочитатьJSON(ЧтениеJSON);
////////////////////////


Выдаётся ошибка:
Ответ:
httpCode "400"
httpMessage "Bad Request"
moreInformation "unauthorized_client"

Но ID и Secret указаны верно.
Что я делаю не так?



Гость
1 - 26.10.2022 - 10:31
Тема закрыта! Вопрос решен.
2 - 26.10.2022 - 13:01
и в чем была проблема? Публика интересуется...
Гость
3 - 26.10.2022 - 17:15
Решение (если кому интересно):

Вместо строки:
IDSecret64 = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ID + ":" + Secret));

Надо написать:
tmpIDSecret64 = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ID + ":" + Secret));

IDSecret64 = "";
Для й=1 По СтрДлина(tmpIDSecret64) Цикл

симв = Сред(tmpIDSecret64, й, 1);

Если симв > Символ(32) Тогда

IDSecret64 = IDSecret64 + симв;

КонецЕсли;
КонецЦикла;

И всё заработало!


К списку вопросов






Copyright ©, Все права защищены