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用戶令牌。