Я надеюсь, что кто-то может мне помочь.
Я пытаюсь получить обзор продукта для продукта, использующего Trustpilot Api, и добиваюсь некоторого успеха, но не получаю ожидаемых результатов.
Я выбрал следующий подход:
- Получить токен OAUTH2 - (возвращает успешный ответ)
- Получить мои бизнес-единицы из файла конфигурации и получить для каждой бизнес-единицыотзывы о товаре с использованием конечной точки:
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 - это тот, который был предоставлен, когда я зарегистрировался для учетной записи разработчика - (возвращает успешный ответ)
(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 # в качестве языка для доступа к API Trustpilot, поэтому следующие фрагменты показывают, как я пытался вызвать метод.
- Установите конечную точку 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 - Unauthorized.
В документации указано, что я должен передать apikey (что я сделал двумя разными способами).
Я также попытался вызвать конечную точку, заменив ?apikey={apiKey}
на ?token={token}
в случае, если документацияневерно и требует токен.
Кроме того, я также попытался передать токен как значение RequestHeader и получить тот же результат (неавторизованный)
Я действительно хотел бы использовать конечную точку:
https://api.trustpilot.com/v1/private/product-reviews/{review}
так как это возвращает больше информации (например, sku, которое позволило бы мне получить доступ к продукту).
Может кто-нибудь сказать мне, где я иду не так?
Спасибо вавансовый