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 + симв; КонецЕсли; КонецЦикла; И всё заработало! | |
![]() | Интернет-форум Краснодарского края и Краснодара |