#acumatica
Вопрос:
Я пытаюсь использовать Acumatica REST API (2020 R1) на веб-сайте, используя приведенный ниже код.
async function loginAcumatica(){
try{
const { apiUrl, clientId, clientSecret, username, password } = await getCredentials();
const url = `${apiUrl}/identity/connect/token`;
const result = await axios.post(url, {
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
body: `grant_type=passwordamp;client_id=${clientId}amp;client_secret=${clientSecret}amp;username=${username}amp;password=${password}amp;scope=api`
});
console.log(result);
return resu<
}catch(err){
console.log(err);
}
}
Идентификатор клиента и секретные значения клиента взяты из подключенного приложения Acumatica. Я использовал тип аутентификации учетных данных владельца ресурса при создании новой записи в подключенном приложении. Имя пользователя и пароль-это учетные данные для входа пользователя.
Однако я не могу подключиться к API и всегда получаю ошибки. Есть ли что-то, чего мне не хватает, или это невозможно?
Спасибо.
Комментарии:
1. Это помогло бы, если бы вы поделились получаемым сообщением об ошибке
2. Я получаю код состояния HTTP 415 с указанным выше запросом. Но, даже если я отправлю запрос в объектном формате, я получу код состояния HTTP 400.
3. Вы смотрели с помощью инструментов разработчика Chrome, что такое полный запрос и ответ? Ваша страница работает в том же домене, что и ваш веб-сайт Acumatica? Если нет, я подозреваю, что это не удается из — за CORS-у Acumatica нет заголовков CORS, установленных по умолчанию, и браузеры будут блокировать запросы между источниками.
4. Да, я проверил запрос и сверился с записями, переданными на конечной точке API, а также проверил ответ. К сожалению, и то, и другое не относится к одной и той же области. И да, мы запросили Acumatica, чтобы включить CORS, и они подтвердили, что он включен. Кроме того, теперь мы не получаем ошибку CORS, а только связанную с запросом API.
Ответ №1:
Ошибка 415 указывает на ошибку с body
типом содержимого.
В документации Acumatica параметры передаются в URL-адресе вместо тела при использовании identity/connect/authorize
конечной точки.
Не указано, какой тип содержимого тела следует использовать с identity/connect/token
конечной точкой. Это может быть не так, как: application/x-www-form-urlencoded
Комментарии:
1. Я тоже пробовал этот способ. imgur.com/Rowj2Ko И я получаю такой результат. «сообщение»:»[«Запрос не удался с кодом состояния 400″]»
2. Кроме того, я хотел бы добавить, что я пытаюсь подключиться к API Acumatica через поток учетных данных владельца ресурса, где на основе документации (Руководство по разработке интеграции 2020 R1) говорится, что для этого требуется тип grant_type, идентификатор клиента, секрет клиента, имя пользователя, пароль и область в теле запроса.
Ответ №2:
API Acumatica REST разработан таким образом, что его нельзя использовать с Javascript с помощью библиотек API, таких как fetch, поскольку он считается небезопасным, поскольку будут раскрыты учетные данные для входа и секреты.