如何使用 TBA 身份验证请求 Netsuite RESTlet

How to request Netsuite RESTlet with TBA authentification

我正在尝试使用 Alamofire (SWIFT) 向我的 Netsuite RESTlet 发出请求,但我遇到了几个困难: 在文档中指定了所需的不同参数(见下文)。

文档:

OAuth 1.0 RESTlet 授权header 需要以下table 中描述的数据。其中一些值可以从 NetSuite UI 获得。必须计算其他值。通常,您的集成应该包括识别这些值并生成完成的 header 的逻辑。按照 OAuth 1.0 协议创建授权 header。

但是在邮递员中我使用了额外的参数(消费者秘密和令牌秘密)并且如果我删除它们它不起作用

当我检查邮递员生成的授权 header 时,我只看到文档中指定的参数:

OAuth realm="my realm",oauth_consumer_key="myConsumerKey",oauth_token="myAccessToken",
oauth_signature_method="HMAC-SHA1",oauth_timestamp="1543488570",
oauth_nonce="ERxdLbUfkeh",oauth_version="1.0",oauth_signature="UeqmxAyeUqtPoICLo%2FARsQE8B1E%3D"

如果有人可以向我解释这一点,我可以在我的应用程序中实施 TBA 身份验证,但现在我需要更好地理解此身份验证。

我 运行 遇到了很多 NetSuite 断开的 RESTlet/TBA 连接的问题。我确实在我们的软件中构建了它来帮助客户。您可以在下面的文章中看到我使用的方法。

Using NetSuite TBA by Calling a RESTlet from an HTTP Source or Target

我也花了几个小时试图让它发挥作用。在我的例子中,我没有将帐户 ID 添加到领域参数。这是我结束的图片:

您可以在此处获取帐户 ID:

希望对你有帮助

SuiteAnswer 42019 中显示了为什么 Postman 需要消费者机密和令牌机密来生成令牌的解释 - 如上面屏幕截图中 oauth_signature 旁边的注释部分所述。来自 that page:

  1. Sign the result string from step 5 using the consumer secret and token secret concatenated using '&' (For this case, HMAC-SHA1 or HMAC-256).

换句话说,Postman 使用机密生成输出以验证您的凭据 - 如果没有它们,您将无法正确生成 oauth_signature。