Trustpilot Api - 始终获取私人产品评论 returns 未授权响应状态
Trustpilot Api - Get Private Product Review always returns Unauthorised response status
希望有人能帮助我。
我正在尝试使用 Trustpilot Api 检索产品评论,我取得了一些成功,但没有得到我期望的结果。
我采取的做法如下:
- 获取 OAUTH2 令牌 -(Returns 成功响应)
- 从配置文件中检索我的业务部门,并使用端点为每个业务部门获取产品评论:
https://api.trustpilot.com/v1/private/business-units/{business-unit}/review?token={OAUTH2 token from step 1}
-(Returns 成功响应)
对于每个产品评论,我都尝试检索产品评论详细信息。为此,我有几个选择。
(i) 每个产品评论都有 meta-link,因此我可以使用相应的 meta-link 获取产品评论,并将 apikey 标记在例如https://api.trustpilot.com/v1/reviews/1234567890abcdefg?apikey={apikey}
其中 apikey 是我在注册开发者帐户时提供的 - (Returns 成功响应)
(ii) 按照 developers.trustpilot.api 网站 (https://developers.trustpilot.com/product-reviews-api#get-private-product-review) 中的记录调用端点:https://api.trustpilot.com/v1/private/product-reviews/{reviewId}
-(Returns 未授权状态代码)
对于上面的选项 (ii),我尝试了多种传递 apikey 的方法(根据文档,端点需要 apikey 作为授权。
我使用 C# 作为访问 Trustpilot api 的语言,因此以下片段是我尝试调用该方法的方式。
- 按如下方式设置 GetProductReview 端点:
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;
.
.
.
在上面的代码片段中,apikey 被传递给方法并作为 RequestHeader 值传递给端点。
- 设置端点如下:
var url = $"https://api.trustpilot.com/v1/private/product-reviews/" + review.Id + $"?apikey={apiKey}";
并调用 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;
.
.
.
在这两种情况下,我都会收到 HttpStatus 401 - 未经授权。
文档指出我应该传递 apikey(我用两种不同的方式完成了)。
我还尝试调用端点将 ?apikey={apiKey}
替换为 ?token={token}
以防文档不正确并且需要令牌。
此外,我还尝试将令牌作为 RequestHeader 值传递并收到相同的结果(未授权)
我真的很想使用端点:
https://api.trustpilot.com/v1/private/product-reviews/{review}
因为这 returns 更多信息(例如允许我重新访问产品的 sku)。
谁能告诉我哪里出错了?
提前致谢
/v1/private/product-reviews/{reviewId}
端点的文档确实 不正确,因为它实际上需要 Business user OAuth Token
而不是 API Key
。
在这种情况下,您有 two options(以及您之前用于 /v1/private/business-units/{businessUnitId}/reviews
端点的第一个):
- 您可以在查询字符串中传递访问令牌:
/v1/private/product-reviews/{reviewId}?token={token}
。你提到你已经尝试过这个。也许它对您不起作用,因为您的令牌在您尝试此方法之前已过期。你能在 refreshing the 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);
...
}
无论如何,您在文档中发现了应该尽快修复的错误。根据经验,所有私有端点(路径中具有 /private/
的端点)都需要 Business user OAuth Token
.
编辑:/v1/private/product-reviews/{reviewId}
端点has been fixed的文档。现在显示需要 Business user OAuth Token
。
希望有人能帮助我。
我正在尝试使用 Trustpilot Api 检索产品评论,我取得了一些成功,但没有得到我期望的结果。
我采取的做法如下:
- 获取 OAUTH2 令牌 -(Returns 成功响应)
- 从配置文件中检索我的业务部门,并使用端点为每个业务部门获取产品评论:
https://api.trustpilot.com/v1/private/business-units/{business-unit}/review?token={OAUTH2 token from step 1}
-(Returns 成功响应) 对于每个产品评论,我都尝试检索产品评论详细信息。为此,我有几个选择。
(i) 每个产品评论都有 meta-link,因此我可以使用相应的 meta-link 获取产品评论,并将 apikey 标记在例如
https://api.trustpilot.com/v1/reviews/1234567890abcdefg?apikey={apikey}
其中 apikey 是我在注册开发者帐户时提供的 - (Returns 成功响应)(ii) 按照 developers.trustpilot.api 网站 (https://developers.trustpilot.com/product-reviews-api#get-private-product-review) 中的记录调用端点:
https://api.trustpilot.com/v1/private/product-reviews/{reviewId}
-(Returns 未授权状态代码)
对于上面的选项 (ii),我尝试了多种传递 apikey 的方法(根据文档,端点需要 apikey 作为授权。
我使用 C# 作为访问 Trustpilot api 的语言,因此以下片段是我尝试调用该方法的方式。
- 按如下方式设置 GetProductReview 端点:
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;
.
.
.
在上面的代码片段中,apikey 被传递给方法并作为 RequestHeader 值传递给端点。
- 设置端点如下:
var url = $"https://api.trustpilot.com/v1/private/product-reviews/" + review.Id + $"?apikey={apiKey}";
并调用 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;
.
.
.
在这两种情况下,我都会收到 HttpStatus 401 - 未经授权。
文档指出我应该传递 apikey(我用两种不同的方式完成了)。
我还尝试调用端点将 ?apikey={apiKey}
替换为 ?token={token}
以防文档不正确并且需要令牌。
此外,我还尝试将令牌作为 RequestHeader 值传递并收到相同的结果(未授权)
我真的很想使用端点:
https://api.trustpilot.com/v1/private/product-reviews/{review}
因为这 returns 更多信息(例如允许我重新访问产品的 sku)。
谁能告诉我哪里出错了?
提前致谢
/v1/private/product-reviews/{reviewId}
端点的文档确实 不正确,因为它实际上需要 Business user OAuth Token
而不是 API Key
。
在这种情况下,您有 two options(以及您之前用于 /v1/private/business-units/{businessUnitId}/reviews
端点的第一个):
- 您可以在查询字符串中传递访问令牌:
/v1/private/product-reviews/{reviewId}?token={token}
。你提到你已经尝试过这个。也许它对您不起作用,因为您的令牌在您尝试此方法之前已过期。你能在 refreshing the 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); ... }
无论如何,您在文档中发现了应该尽快修复的错误。根据经验,所有私有端点(路径中具有 /private/
的端点)都需要 Business user OAuth Token
.
编辑:/v1/private/product-reviews/{reviewId}
端点has been fixed的文档。现在显示需要 Business user OAuth Token
。