NetSuite-REST API(RESTlet)-创建记录会在第二次和更多记录请求中导致INVALID_LOGIN_ATTEMPT失败
我在使用NetSuite REST API使用基于令牌的身份验证(TBA)OAuth身份验证创建后续记录时遇到问题。下面是我的完整代码:https://gist.github.com/axilaris/428e63e5ff107d212fbcc07c5bdbce7a(它包含rest let、python代码和python代码的输出)。
创建了第一条记录(您可以看到Success),但第二条总是得到INVALID_LOGIN_ATTEMPT。如果我删除创建第二个记录,它仍然会成功创建每一次。但如果我在创建第2个或更多的进程中,其第2个或更多的进程将始终具有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'}
以下是审核跟踪日志的屏幕截图
是否有人可以建议每次创建记录时都需要身份验证TBA?有没有更好的方法来处理这个问题:首先执行TBA身份验证,然后使用该响应(可能是令牌)创建多条记录?请告知,因为我有一个定期创建记录的平台。
解决方案
根据SuiteAnswer74343
对于本例,用户已经使用了随机数+时间戳的组合。确保为每个请求生成唯一的随机数。
确保不要两次发送相同的请求。(如果用户需要执行相同的操作,则用户必须生成新的TBA标头)。
相关文章