C# SP-API 为 getReportDocument 提供签名错误,但它适用于其他方法
C# SP-API giving error of signature for getReportDocument but it works fine for other methods
我正在使用 C# Amazon SP-API 库,我已经使用 swagger codegen 转换了 C# 包装器 类,所有这些都可以很好地处理定价以及报告中的一些功能 API .
但是当我尝试调用 getReportDocument 时,它给出了 AWS 签名不匹配的错误。
如果你能确认只有像GetOrder,GetReport这样通过id调用单品时出现问题,而且你使用的是亚马逊提供的Amazon.SellingPartnerAPIAA.csproj签名,那么很有可能是AWSSigV4Signer.CreateCanonicalRequest
方法使用段占位符而不是 id 本身对 url 进行签名。
例如“/reports/2021-06-30/documents/{reportDocumentId}”而不是“/reports/2021-06-30/documents/0356cf79-b8b0-4226-b4b9-0ee058ea5760”
一种可能的解决方案是在调用 ExtractCanonicalURIParameters
之前“手动”解析 url
foreach(var par in restRequest.Parameters)
{
if(restRequest.Resource.Contains($"{{{par.Name}}}"))
{
restRequest.Resource = restRequest.Resource.Replace($"{{{par.Name}}}", par.Value.ToString());
}
}
//CanonicalURI
canonicalizedRequest.AppendFormat("{0}\n", AwsSignerHelper.ExtractCanonicalURIParameters(restRequest.Resource));
我正在使用 C# Amazon SP-API 库,我已经使用 swagger codegen 转换了 C# 包装器 类,所有这些都可以很好地处理定价以及报告中的一些功能 API .
但是当我尝试调用 getReportDocument 时,它给出了 AWS 签名不匹配的错误。
如果你能确认只有像GetOrder,GetReport这样通过id调用单品时出现问题,而且你使用的是亚马逊提供的Amazon.SellingPartnerAPIAA.csproj签名,那么很有可能是AWSSigV4Signer.CreateCanonicalRequest
方法使用段占位符而不是 id 本身对 url 进行签名。
例如“/reports/2021-06-30/documents/{reportDocumentId}”而不是“/reports/2021-06-30/documents/0356cf79-b8b0-4226-b4b9-0ee058ea5760”
一种可能的解决方案是在调用 ExtractCanonicalURIParameters
foreach(var par in restRequest.Parameters)
{
if(restRequest.Resource.Contains($"{{{par.Name}}}"))
{
restRequest.Resource = restRequest.Resource.Replace($"{{{par.Name}}}", par.Value.ToString());
}
}
//CanonicalURI
canonicalizedRequest.AppendFormat("{0}\n", AwsSignerHelper.ExtractCanonicalURIParameters(restRequest.Resource));