Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
08 дек 2022, 03:30

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

Автор ComAlex, 24 окт 2022, 20:22

0 Пользователей и 1 гость просматривают эту тему.

ComAlex

Всем привет!
Тем, кто знаком с авторизацией с Сбер,
подскажите, как получить токен!

Код:
    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 указаны верно.
Что я делаю не так?

ComAlex


ComAlex

Решение (если кому интересно):

Вместо строки:
    IDSecret64         = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ID + ":" + Secret)); 
Надо написать:
        tmpIDSecret64 = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ID + ":" + Secret));
   
    IDSecret64 = "";
    Для й=1 По СтрДлина(tmpIDSecret64) Цикл
       
        симв = Сред(tmpIDSecret64, й, 1);
       
        Если симв > Символ(32) Тогда
           
            IDSecret64 = IDSecret64 + симв;
           
        КонецЕсли;       
    КонецЦикла;

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

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск