NetSuite OAUTH1 POST 请求在 Postman 中有效,但使用 Restsharp 时失败

问题描述 投票:0回答:1

我有代码允许我们通过 OAuth 1.0 使用 NetSuite REST API。一切正常,除了一个电话。当尝试执行 /salesorder/{id}/!transform/itemFulfillment 时,它会失败并显示 401。所有其他调用都可以正常工作。当我从邮递员执行相同的调用时,它也工作得很好。我错过了什么?

这是我的代码:

private static async Task CreateItemFulFillmentsAsync(NetSuiteJob job, int id, Item item)
{
    RestRequest request = new RestRequest($"{job.RecordUrl}/salesorder/{id}/!transform/itemFulfillment", Method.Post);
    request.AddBody(item);

    RestHelper restHelper = new RestHelper();
    RestResponse response = await restHelper.ExecuteRestRequest(request, job);
    if (response == null || !response.IsSuccessful)
    {
        throw new Exception($"Failed to create the Item Fulfillment for the Sales Order: {id}.\r\n" + response.Content);
    }
}

还有助手类:

public async Task<RestResponse> ExecuteRestRequest(RestRequest request, NetSuiteJob job)
{
    RestClient client = new RestClient(job.BaseUrl) { Authenticator = GetOAuth1Authenticator(job) };
    RestResponse response = await client.ExecuteAsync(request);
    return response;
}

private OAuth1Authenticator GetOAuth1Authenticator(NetSuiteJob job)
{
    OAuth1Authenticator oAuth1 = OAuth1Authenticator.ForAccessToken(
                                                        consumerKey: job.ConsumerKey,
                                                        consumerSecret: job.ConsumerSecret,
                                                        token: job.TokenId,
                                                        tokenSecret: job.TokenSecret,
                                                        OAuthSignatureMethod.HmacSha256);
    oAuth1.Realm = job.Realm;
    return oAuth1;
}

结果是:

{“类型”:“https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2”, "title":"未经授权","status":401, "o:errorDetails":[{"detail":"登录尝试无效。有关更多详细信息, 请参阅 NetSuite UI 中的“设置”>“用户/角色”中的登录审核跟踪 > 用户管理 > 查看登录审核跟踪。","o:errorCode":"INVALID_LOGIN"}]}

在 NetSuite 的登录审核跟踪中,此调用被记录为失败,并且角色为空白,但使用不同操作的其他调用按应有的方式显示角色。工作例程使用相同的帮助程序类,但使用不同的 URL 和正文。我已经验证了传递的内容也与我在 Postman 中手动执行的内容相匹配。

c# api oauth netsuite restsharp
1个回答
0
投票

你能解决这个问题吗?我在 Postman 中遇到类似的问题,但 C# 401 错误

© www.soinside.com 2019 - 2024. All rights reserved.