2017-05-29 119 views
0

当试图使用https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID端点获取优惠信息时,我需要帮助理解令牌问题。Ebay getOffer API令牌问题

我有2种令牌: 用户令牌和访问令牌。

文档清楚地给了我必须使用USER TOKEN的解释。 我使用Auth'n'Auth方法制作它,我同意作为卖家提供许可。现在我想使用此令牌这样的:

public void getOffer(@RequestBody Map<String, String> args) throws IOException { 
    HttpClient client = HttpClientBuilder.create().build(); 
    HttpGet httpGet = new HttpGet("https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID"); 

    httpGet.setHeader("Authorization", "Bearer " + args.get("token")); 
    httpGet.setHeader("Content-Language", "en-US"); 

    HttpResponse response = client.execute(httpGet); 
    System.out.print(EntityUtils.toString(response.getEntity())); 
} 

它让我回: { "errors" : [ { "errorId" : 1001, "domain" : "OAuth", "category" : "REQUEST", "message" : "Invalid access token", "longMessage" : "Invalid access token. Check the value of the Authorization HTTP request header." } ] }

什么可能是错误的,我错过了什么措施? 预先感谢您

回答

0

那么它给你正在发生的确切的错误:“无效的访问令牌检查授权HTTP请求头的价值。”

这意味着你有这行代码的问题...

httpGet.setHeader("Authorization", "Bearer " + args.get("token")); 

某处有问题,授权头,因此无论是标志是错误的,该值不正确,或者它只是没有收到它。 “承载者”一词是否应该与标题一起发送?并且args.get(“token”)的值是否包含正确的值?

REST服务发生的另一个问题是,有时您必须使用HTML实体函数对附加到Web请求的字符串/ ldata进行编码。由于您在授权中有空间,可能是eBay没有正确解释空间,您必须在字符串上使用HTML实体。事情是这样的......

httpGet.setHeader("Authorization", HttpUtility.HtmlEncode("Bearer " + args.get("token")); 
0

我使用Auth'n'Auth方法

有一个用户令牌的两个版本做到了。 eBay提供了一种称为“Auth”和“Auth”的较旧风格,以及较新的OAuth版本。 “Auth'和'Auth”令牌不适用于新的RESTFul API。您需要按照documentation中的流程生成OAuth用户令牌。