【发布时间】:2021-04-15 19:53:49
【问题描述】:
我正在尝试使用以下代码在网站中使用 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=password&client_id=${clientId}&client_secret=${clientSecret}&username=${username}&password=${password}&scope=api`
});
console.log(result);
return result;
}catch(err){
console.log(err);
}
}
客户端 ID 和客户端密码值来自 Acumatica 的连接应用程序。在 Connected Application 中创建新记录时,我使用了 Resource Owner Password Credentials 身份验证类型。 用户名和密码是用户登录凭据。
但是,我无法连接到 API,并且总是不断出错。有什么我遗漏的或不可行的吗?
谢谢。
【问题讨论】:
-
如果您分享收到的错误消息会有所帮助
-
我得到 HTTP 状态代码 415 与上述请求。但是,即使我以对象格式发送请求,我也会得到 HTTP 状态代码 400。
-
您是否使用 Chrome 开发者工具查看完整的请求和响应是什么?您的页面是否与您的 Acumatica 网站在同一个域中运行?如果不是,我怀疑这是由于 CORS 而失败 - Acumatica 默认没有设置 CORS 标头,浏览器将阻止跨域请求。
-
是的,我已经检查了请求并通过 API 端点传递的记录进行了验证,还检查了响应。不幸的是,两者不在同一个域中。是的,我们已经要求 Acumatica 启用 CORS,他们已经确认它已启用。此外,我们现在没有收到 CORS 错误,但仅与 API 请求有关。
标签: acumatica