2016-05-26 120 views
3

我正在將我的web應用與AppDirect, 進行集成,爲此我使用jersey創建了一個java rs API。使用路標對HTTP消息進行簽名時獲取401

當我訂閱一個事件時,我得到一個包含oauth值(密鑰和祕密)的地圖來簽名我的請求和一個事件url,我向其發出一個標誌提取。

我正在按預期得到這些值(oauth和eventurl)。

現在,當我試圖發出一個簽名提取使用庫signpost,我使用下面的代碼:

OAuthConsumer consumer = new DefaultOAuthConsumer(consumer_key, secret); 
// create an HTTP request to a protected resource 
URL url = new URL(eventUrl); 
HttpURLConnection request = (HttpURLConnection) url.openConnection(); 

// sign the request 
consumer.sign(request); 

// send the request 
request.connect(); 

我收到此錯誤信息:

getResponseMessage: Unauthorized 
getresponsecode: 401 

我也試圖與以下測試值:

  1. url =「https://www.appdirect.com/api/integration/v1/events/dummyOrder」;
  2. dummyKey =「Dummy」;
  3. dummySecret =「secret」; 但我得到了同樣的結果。

請問我該如何解決?

我也試過和添加此:

request.setRequestMethod("GET");   

request.setRequestProperty("Authorization", "OAuth"); 

request.setRequestProperty("Host", "..."); 

request.setRequestProperty("Content-Type", "application/xml");   

request.setRequestProperty("oauth_nonce", oauth_nonce); 

request.setRequestProperty("oauth_signature", oauth_signature); 

request.setRequestProperty("oauth_signature_method", oauth_signature_method); 

request.setRequestProperty("oauth_timestamp", oauth_timestamp); 

request.setRequestProperty("oauth_version", oauth_version); 

在授權物業

回答

2

Dummy keys (oauth)

No-auth

這裏也試圖與key:secret這個服務通過測試時行爲Postman Chrome擴展程序。 如果您使用的是OAuth提供程序,那麼您需要爲AppDirect獲得有效的API密鑰並保密。

順便說一句,第二個屏幕截圖顯示你不需要發送OAuth令牌到appdirect到https://www.appdirect.com/api/integration/v1/events/dummyOrder,因爲它授權任何url。

因此,根據您的筆記,您必須添加適當的(祕密和密鑰),然後AppDirect OAuth服務器將返回一個有效令牌,您將在尋址AppDirect存儲庫時使用該令牌。或者您可以發送每個請求的密鑰。

+0

是的,我已經使用OAuthConsumer consumer = new DefaultOAuthConsumer(consumer_key,secret);我會添加一些代碼 – eeadev

+0

檢查,我更新了一點。 – cingulata

+0

我有一個有效的消費者密鑰和祕密,我將它傳遞給我的DefaultOAuthConsumer對象。我應該在哪裏使用它? – eeadev