Невозможно использовать REST API Acumatica на веб — сайте

#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, поскольку он считается небезопасным, поскольку будут раскрыты учетные данные для входа и секреты.