|
Работа с API СДЭК Продолжение | ☑ | ||
---|---|---|---|---|
0
lasermag
02.11.21
✎
21:17
|
Не смотря на то что нашел ветку с темой Работа с API СДЭК версия 2.0 столкнулся с той же проблемой. Привер вроде все в порядок но выдается таже ошибка {"timestamp":"2021-11-02T18:14:57.041+00:00","status":401,"error":"Unauthorized","message":"","path":"/oauth/token"} . Прошу Вас коллеги помочь разобраться.
Код запроса &НаКлиенте Процедура ВыполнитьСоединение(Команда) СтруктураAPI = ПутьAPI(); Соединение = Новый HTTPСоединение(СтруктураAPI.Сервер, СтруктураAPI.Порт, , , , , Новый ЗащищенноеСоединениеOpenSSL); Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "x-www-form-urlencoded"); Запрос = Новый HTTPЗапрос(СтруктураAPI.Путь, Заголовки); ПараметрыНТТРЗавпроса = ПолучитьПараметрыАвторизации(); Запрос.УстановитьТелоИзСтроки(ПараметрыНТТРЗавпроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.Использовать); Попытка Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос); Исключение // исключение здесь говорит о том, что запрос не дошел до HTTP-Сервера Сообщить("Произошла сетевая ошибка!"); ВызватьИсключение; КонецПопытки; ОтветСтрокой = Ответ.ПолучитьТелоКакСтроку(); КонецПроцедуры &НаКлиенте Функция ПутьAPI() Структура = Новый Структура; Структура.Вставить("ПолныйПуть", "https://api.cdek.ru/v2/oauth/token?parameters"); Структура.Вставить("Сервер", "api.cdek.ru"); Структура.Вставить("Порт", 443); Структура.Вставить("Путь", "/v2/oauth/token?parameters"); Возврат Структура; КонецФункции &НаКлиенте Функция ДобавитьПараметрыНТТРЗапроса(СтрПараметры, ИмяПараметра, ЗначениеПараметра) СтрПараметры = СтрПараметры + ?(ПустаяСтрока(СтрПараметры), "","&") + ИмяПараметра + "=" + ЗначениеПараметра; Возврат СтрПараметры; КонецФункции &НаКлиенте Функция ПолучитьПараметрыАвторизации() ПараметрыНТТРЗавпроса = ""; ДобавитьПараметрыНТТРЗапроса(ПараметрыНТТРЗавпроса, "grant_type" , "client_credentials"); ДобавитьПараметрыНТТРЗапроса(ПараметрыНТТРЗавпроса, "client_id" , "[email protected]"); ДобавитьПараметрыНТТРЗапроса(ПараметрыНТТРЗавпроса, "client_secret" , "19"); Возврат ПараметрыНТТРЗавпроса; КонецФункции |
|||
1
Ёпрст
02.11.21
✎
22:04
|
(0) если ты пишешь "x-www-form-urlencoded то и строку запроса должен кодировать
|
|||
2
Ёпрст
02.11.21
✎
22:08
|
Т.е в тело устанавливать это :
ТвояСтрокаЗапроса = КодироватьСтроку(ТвояСтрокаЗапроса , СпособКодированияСтроки.КодировкаURL); |
|||
3
lasermag
02.11.21
✎
22:36
|
Изменил
ПараметрыНТТРЗавпроса = КодироватьСтрокуКодировкаURL(ПараметрыНТТРЗавпроса); Запрос.УстановитьТелоИзСтроки(ПараметрыНТТРЗавпроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.Использовать); В результате ПараметрыНТТРЗавпроса = grant_type%3Dclient_credentials%26client_id%3Dim-2%40ff.cdek.ru%26client_secret%3D19 т есть кодировка работает. А вот результат конечный не изменился {"timestamp":"2021-11-02T19:33:22.755+00:00","status":401,"error":"Unauthorized","message":"","path":"/oauth/token"} |
|||
4
Смотрящий
02.11.21
✎
22:41
|
Ты не не проходишь авторизацию
Логин пароль где который получаешь в лк сдека ? |
|||
5
Ёпрст
02.11.21
✎
22:41
|
И это ИспользованиеByteOrderMark.Использовать может НеИспользовать ?
|
|||
6
Ёпрст
02.11.21
✎
22:43
|
И это, уверен, что всё в ело надо пихать ?
|
|||
7
Ёпрст
02.11.21
✎
22:43
|
в тело
|
|||
8
Ёпрст
02.11.21
✎
22:44
|
Мот атм тип того ?
/v2/oauth/token?parameters=вася&пароль=федя&ышопараметр=хрень ....т.е всё в параметры, а не в тело |
|||
9
lasermag
02.11.21
✎
23:01
|
Вот реально что мне надо
Взаимодействие с сервисом требует клиентской авторизации. Авторизация клиентов обеспечивается с применением протокола OAuth 2.0. Для получения токена необходимо отправить POST-запрос (x-www-form-urlencoded) на URL: тестовая https://api.edu.cdek.ru/v2/oauth/token?parameters боевая https://api.cdek.ru/v2/oauth/token?parameters Разрешенные параметры и их возможные значения: grant_type: тип аутентификации, доступное значение: client_credentials; client_id: идентификатор клиента, равен Account; client_secret: секретный ключ клиента, равен Secure password. В ответ на запрос доступа будет возвращена следующая информация: access_token: jwt-токен; token_type: тип токена (всегда принимает значение "bearer"); expires_in: срок действия токена (по умолчанию 3600 секунд); scope: область действия токена (доступ к объектам и операциям над ними); jti: уникальный идентификатор токена. |
|||
10
lasermag
02.11.21
✎
23:20
|
(4) Логин и пароль правильные
|
|||
11
OldCondom
03.11.21
✎
05:05
|
жуть. Найди любой готовый вариант подключения к чему либо(сбис, контур, доставки) и посмотри как сделано там. Модули интеграции как правило бесплатно раздают.
У тебя даже путь неправильно указан. |
|||
12
OldCondom
03.11.21
✎
09:04
|
Соединение = Новый HTTPСоединение("api.edu.cdek.ru", , , , , , Новый ЗащищенноеСоединениеOpenSSL());
|
|||
13
acht
03.11.21
✎
09:15
|
(3) > В результате ПараметрыНТТРЗавпроса = grant_type%3Dclient_credentials%26client_id%3Dim-2%40ff.cdek.ru%26client_secret%3D19 т есть кодировка работает.
Это некорректные данные для типа "x-www-form-urlencoded". |
|||
14
rozer76
03.11.21
✎
09:38
|
(13) + 1 скажем так, что не нужно все так кодировать при "x-www-form-urlencoded" и там должно быть вроде "application/x-www-form-urlencoded"
|
|||
15
youalex
03.11.21
✎
11:21
|
тестовый акк у них работает, по
api.edu.cdek.ru/v2/oauth/token?grant_type=client_credentials&client_id=EMscd6r9JnFiQ3bLoyjJY6eM78JrJceI&client_secret=PjLZkKBHEiLK3YsjtNrt3TGNG0ahs3kG |
|||
16
Ёпрст
03.11.21
✎
12:09
|
(15) ага, так и думал, что не в тело..
|
|||
17
Ёпрст
03.11.21
✎
12:09
|
а parameters заменяется на строку параметров ..
|
|||
18
lasermag
03.11.21
✎
13:35
|
(11) Путь указан думаю верно так ка код ошибки 401.а это не правильная авторизация. пробовал другие пути код выходит 404. Если вы знаете какой правильный путь напишите пожалуйста.
|
|||
19
lasermag
03.11.21
✎
13:39
|
(13) Формат для типа типа "x-www-form-urlencoded" пример name=Ivan&surname=Ivanov. Вот мои параметры
"grant_type=client_credentials&client_id=EMscd6r9JnFiQ3bLoyjJY6eM78JrJceI&client_secret=PjLZkKBHEiLK3YsjtNrt3TGNG0ahs3kG" |
|||
20
Kassern
03.11.21
✎
13:42
|
(0) если плохо разбираетесь в нюансах работы http соединения, то лучше купите обработку для этого сдека. Потратите скорее всего пару тысяч (а это час-два ваших, которые вы скорее всего в пустую потратили), а далее уже причешите эту обработку под свои нужды, либо напишите свою, на базе купленной.
В свое время я так с почтой россии поступил, купил за полторы тысячи обработку, посмотрел как там все это работает и написал свою уже быстро и без проблем. |
|||
21
OldCondom
03.11.21
✎
13:53
|
эмм, я в 12 рабочий код дал. Тестовый акк
|
|||
22
lasermag
03.11.21
✎
14:08
|
(21) Огромное спасибо . Извините сразу не увидел. долго ночью сидел.
Результат ошибка была в этом месте Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); application Путь , формат x-www-form-urlencoded все остальное верно OldCondom еще раз огромное спасибо !!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |