javascript - Netsuite - REST API (reSTLet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败

标签 javascript rest oauth netsuite restlet

我在使用基于 token 的身份验证 (TBA) oauth 身份验证的 netsuite rest api 创建后续记录时遇到问题。这是我的完整代码:https://gist.github.com/axilaris/428e63e5ff107d212fbcc07c5bdbce7a(它包含 reSTLet、python 代码和 python 代码的输出)。
第一条记录被创建(你可以看到成功),但第二条总是得到 INVALID_LOGIN_ATTEMPT。如果我删除创建第二条记录,每次仍然可以成功创建。但是,如果我在创建第二个或更多的过程中,它总是第二个或更多将有 INVALID_LOGIN_ATTEMPT。

{'Authorization': b'OAuth realm="5504997_SB1", oauth_version="1.0", oauth_nonce="87811756", oauth_timestamp="1635417611", oauth_token="d0c58f511e12345678c3e969e09e0ae1d967869762a354523494f0b953e9", oauth_consumer_key="117123345674ffb0b98440badb57205b3542234832cbdbabca0", oauth_body_hash="2jmj7l5rSw0yVb%2FvlWAYeqweq%2FYBwk%3D", oauth_signature_method="HMAC-SHA256", oauth_signature="Apx76mZiSjKtF6WjLweqweqwRNV4KF1VEZAfURe8%3D"', 'Content-Type': 'application/json'}
Result: {"success":true}
{'X-N-OperationId': '42656b12-5874-4870-b958-631e8a298ecd', 'NS_RTIMER_COMPOSITE': '331252041:706172746E6572733031312E70726F642E6475622E6E65746C65646765722E636F6D:80', 'Strict-Transport-Security': 'max-age=31536000', 'Content-Type': 'application/json;charset=utf-8', 'Pragma': 'No-Cache', 'Cache-Control': 'No-Cache', 'Expires': '0', 'Content-Length': '17', 'P3P': 'CP="CAO PSAa OUR BUS PUR"', 'Vary': 'User-Agent', 'Date': 'Thu, 28 Oct 2021 10:40:11 GMT', 'Connection': 'keep-alive', 'Set-Cookie': 'NS_ROUTING_VERSION=LAGGING; path=/', 'Akamai-GRN': '0.57561b3a.1635417611.239d029f'}
Result: {"error" : {"code" : "INVALID_LOGIN_ATTEMPT", "message" : "Invalid login attempt."}}
{'WWW-Authenticate': 'OAuth realm="5008903_SB1"', 'Content-Type': 'application/json;charset=utf-8', 'Content-Length': '84', 'P3P': 'CP="CAO PSAa OUR BUS PUR"', 'Vary': 'User-Agent', 'Date': 'Thu, 28 Oct 2021 10:40:12 GMT', 'Connection': 'close', 'Set-Cookie': 'NS_ROUTING_VERSION=LAGGING; path=/', 'Akamai-GRN': '0.57561b3a.1635417611.239d0735'}
这是 Audit Trail 日志的屏幕截图
enter image description here
有人可以建议每次创建记录时都需要身份验证 TBA 吗?有没有更好的方法来处理这个问题,首先进行 TBA 身份验证,然后使用该响应(可能是 token )创建多个记录?请告知,因为我有一个定期创建记录的平台。

最佳答案

根据 SuiteAnswer 74343
对于此示例,用户已经使用了 nonce + timestamp 的组合。确保为每个请求生成唯一的随机数。
确保不要两次发送相同的请求。 (如果用户需要做同样的操作,用户必须生成一个新的 TBA 头)。

关于javascript - Netsuite - REST API (reSTLet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69723531/

相关文章:

java - Jersey JUnit 测试框架 - 错误状态 500

rest - 在 Flask Peewee 中使用 SSL 证书

php - 使用 php 将数据从 json 编码数据(pinterest api oauth)插入 mysql

asp.net - 使用 OAuth 2 对 ASP.NET Web API 进行身份验证 - 要使用的最佳授权授予类型?

ruby-on-rails - 带有 omniauth linkedin Ruby gem 的大型个人资料图片

javascript - d3.js 散布饼图标签

javascript - 解析有效 JSON 字符串时遇到问题

HTML 文件中的 Javascript,每行单元格不断增加的表格

javascript - 如何正确使用lodash pick方法

java - 通过 angular 4 http post 连接到服务器端不允许的 java rest api