我在使用基于 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 日志的屏幕截图有人可以建议每次创建记录时都需要身份验证 TBA 吗?有没有更好的方法来处理这个问题,首先进行 TBA 身份验证,然后使用该响应(可能是 token )创建多个记录?请告知,因为我有一个定期创建记录的平台。
最佳答案
根据 SuiteAnswer 74343
对于此示例,用户已经使用了 nonce + timestamp 的组合。确保为每个请求生成唯一的随机数。
确保不要两次发送相同的请求。 (如果用户需要做同样的操作,用户必须生成一个新的 TBA 头)。
关于javascript - Netsuite - REST API (reSTLet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69723531/