如何从 Trustpilot API 获得评论

问题描述

试图从特定产品中获得 Trustpilot 评论,但无处可寻。

可以成功获得代币,然后是评论:

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 (将#修改为@)