问题描述
试图从特定产品中获得 Trustpilot 评论,但无处可寻。
可以成功获得代币,然后是评论:
- 查询 https://api.trustpilot.com/v1/private/product-reviews/business-units/{businessUnitId}/reviews 根本不会返回任何结果,但运行时不会出错
和
- 查询 https://api.trustpilot.com/v1/product-reviews/business-units/{businessUnitId}/reviews 将返回错误“Microsoft.VisualStudio.Services.OAuth.AccessTokenResponseProduct review retrieved.{"fault":{"faultstring":"Invalid ApiKey","detail ":{"errorcode":"oauth.v2.InvalidApiKey"}}}"
ApiKey 与获取令牌相同,所以不明白为什么在这里不起作用。在绝望的尝试中将令牌添加到 url (?token={token}) 并且也没有成功。
sku 系列包括所有变体。也试过没有 sku 参数,但没有检索到任何内容。
代码如下:
var ApiKey = "ApiKey";
var SecretKey = "SecretKey";
var Username = "Username";
var Password = "Password";
var serverUrl = "xxx.xxx.xxx.xxx";
var BusinnessUnit = "BusinnessUnit";
var AuthUrl2 = "https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken";
var ReviewUrl = "https://api.trustpilot.com/v1/private/product-reviews/business-units/"+ bkBusinnessUnit + "/reviews";
var ProductReviewUrl = "https://api.trustpilot.com/v1/product-reviews/business-units/" + bkBusinnessUnit + "/reviews";
var token = "";
// get token
using (var httpClient = new HttpClient())
{
try
{
httpClient.BaseAddress = new Uri(AuthUrl2);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
var authString = ApiKey + ":" + SecretKey;
string encodedStr = Convert.ToBase64String(Encoding.UTF8.GetBytes(authString));
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic",encodedStr);
var stringPayload = "grant_type=password&username=" + Username + "&password=" + Password;
var httpContent = new StringContent(stringPayload,Encoding.UTF8,"application/x-www-form-urlencoded");
HttpResponseMessage httpResponseMessage = httpClient.PostAsync(AuthUrl2,httpContent).Result;
var accessTokenResponseString = httpResponseMessage.Content.ReadAsStringAsync().Result;
var accessTokenResponseObject = JsonConvert.DeserializeObject<AccessTokenResponse>(accessTokenResponseString);
token = accessTokenResponseObject.AccessToken;
Console.WriteLine("Token retrieved. " + token);
}
catch (Exception ex)
{
Console.WriteLine("Failed!" + ex.ToString());
}
}
// get product reviews
using (var httpClient = new HttpClient())
{
try
{
httpClient.BaseAddress = new Uri(ProductReviewUrl);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
var authString = ApiKey + ":" + SecretKey;
string encodedStr = Convert.ToBase64String(Encoding.UTF8.GetBytes(authString));
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic",encodedStr);
var stringPayload = "sku=SK40132-BLK-6,SK40132-BLK-8,SK40132-BLK-10,SK40132-BLK-12,SK40132-BLK-14,SK40132-BLK-16,SK40132-BLK-18&token=" + token;
var httpContent = new StringContent(stringPayload,"application/x-www-form-urlencoded");
HttpResponseMessage httpResponseMessage = httpClient.PostAsync(ProductReviewUrl,httpContent).Result;
var reviewResponseString = httpResponseMessage.Content.ReadAsStringAsync().Result;
var reviewResponseObject = JsonConvert.DeserializeObject<AccessTokenResponse>(reviewResponseString);
Console.WriteLine(reviewResponseObject + "Product review retrieved." + reviewResponseString);
}
catch (Exception ex)
{
Console.WriteLine("Failed!" + ex.ToString());
}
}
// get reviews
using (var httpClient = new HttpClient())
{
try
{
httpClient.BaseAddress = new Uri(ReviewUrl);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer",token);
var stringPayload = "sku=SK40132-BLK-6,SK40132-BLK-18";
var httpContent = new StringContent(stringPayload,"application/x-www-form-urlencoded");
HttpResponseMessage httpResponseMessage = httpClient.PostAsync(ReviewUrl,httpContent).Result;
var reviewResponseString = httpResponseMessage.Content.ReadAsStringAsync().Result;
var reviewResponseObject = JsonConvert.DeserializeObject<AccessTokenResponse>(reviewResponseString);
Console.WriteLine(reviewResponseObject + "Review retrieved." + reviewResponseString);
}
catch (Exception ex)
{
Console.WriteLine("Failed!" + ex.ToString());
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)