Jul*_*ing 2 api review unauthorized trustpilot
我希望有一个人可以帮助我。
我正在尝试使用Trustpilot Api检索产品的产品评论,并取得了一些成功,但未获得我期望的结果。
我采用的方法如下:
https://api.trustpilot.com/v1/private/business-units/{business-unit}/review?token={OAUTH2 token from step 1}
返回成功的响应)对于每个产品评论,我尝试检索产品评论详细信息。为此,我有两个选择。
(i)每个产品评论都有元链接,因此我可以使用相应的元链接并在apikey上加标签来获得产品评论,例如https://api.trustpilot.com/v1/reviews/1234567890abcdefg?apikey={apikey}
apikey是我注册开发者帐户时提供的apikey-(返回成功响应)
(ii)调用developers.trustpilot.api网站(https://developers.trustpilot.com/product-reviews-api#get-private-product-review)中记录的端点https://api.trustpilot.com/v1/private/product-reviews/{reviewId}
:-(返回未经授权的状态码)
对于上面的选项(ii),我尝试了多种传递apikey的方法(根据文档,端点需要apikey作为授权。
我使用C#作为访问Trustpilot api的语言,因此以下代码段是我尝试调用该方法的方式。
var url = $"https://api.trustpilot.com/v1/private/product-reviews/" + review.Id.ToString();
using (var client = new HttpClient())
{
var uri = new Uri(url, UriKind.Absolute);
client.BaseAddress = uri;
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new system.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("apikey", apiKey);
try
{
var response = client.GetAsync(uri).Result;
.
.
.
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,将apikey传递给方法,并作为RequestHeader值传递给端点。
var url = $"https://api.trustpilot.com/v1/private/product-reviews/" + review.Id + $"?apikey={apiKey}";
Run Code Online (Sandbox Code Playgroud)
并按如下所示调用HttpClient:
using (var client = new HttpClient())
{
var uri = new Uri(url, UriKind.Absolute);
client.BaseAddress = uri;
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
try
{
var response = client.GetAsync(uri).Result;
.
.
.
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都会收到HttpStatus 401-未经授权。
该文档指示我应该传递apikey(我已经用两种不同的方式完成了)。
我也打过电话端点更换?apikey={apiKey}
用?token={token}
的情况下,该文件是不正确的,需要令牌。
此外,我还尝试过将令牌作为RequestHeader值传递,并接收相同的结果(未经身份验证)
我真的很想使用端点:
https://api.trustpilot.com/v1/private/product-reviews/{review}
Run Code Online (Sandbox Code Playgroud)
因为这会返回更多信息(例如,允许我重新访问该产品的sku)。
谁能告诉我我在哪里错了?
提前致谢
/v1/private/product-reviews/{reviewId}
端点的文档确实是错误的,因为它实际上需要一个Business user OAuth Token
而不是一个API Key
。
在这种情况下,您有两个选项(第一个是您之前在/v1/private/business-units/{businessUnitId}/reviews
端点上使用的选项):
/v1/private/product-reviews/{reviewId}?token={token}
。您提到您已经尝试过了。也许它对您不起作用,因为您的令牌在尝试这种方法之前就过期了。刷新令牌后可以重试吗?您还可以将访问令牌作为传递Bearer authorization header
:
var url = $"https://api.trustpilot.com/v1/private/product-reviews/{review.Id.ToString()}";
using (var client = new HttpClient())
{
...
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
...
}
Run Code Online (Sandbox Code Playgroud)无论如何,您在文档中发现了一个错误,应该尽快修复。根据经验,所有专用端点(/private/
路径中的专用端点)都需要一个Business user OAuth Token
。
编辑:/v1/private/product-reviews/{reviewId}
端点的文档已修复。不是,它表明a Business user OAuth Token
是必需的。
归档时间: |
|
查看次数: |
111 次 |
最近记录: |