2016-05-26 4 views
3

Я интегрирую свое веб-приложение с AppDirect, . Для этого я создал API java rs с использованием трикотажа.Получение 401 при подписании HTTP-сообщения со значком

Когда я подписываюсь на событие, я получаю карту, содержащую значения 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); 

также попытался с key:secret в собственности авторизации

ответ

2

Dummy keys (oauth)

No-auth

Вот поведение этой службы при тестировании с помощью Расширение Postman Chrome. Если вы используете провайдера OAuth, вам необходимо получить действительный api-ключ для AppDirect и секрет.

BTW второй скриншот показывает, что вам не нужно посылать токен OAuth для appdirect для https://www.appdirect.com/api/integration/v1/events/dummyOrder, поскольку он разрешает любой URL-адрес.

Итак, в соответствии с вашими заметками вы должны добавить надлежащий (секретный и ключ), а затем сервер AppAirect OAuth вернет вам действительный токен, который вы будете использовать при обращении к репозиториям AppDirect. Или вы можете отправлять секретные ключи с каждым запросом.

+0

Да, я уже использую OAuthConsumer consumer = new DefaultOAuthConsumer (consumer_key, secret); Я добавлю код – eeadev

+0

Проверяю, я немного обновил ответ. – cingulata

+0

У меня есть действующий ключ и секретный ключ, и я передаю его в свой объект DefaultOAuthConsumer. Где еще я буду использовать его? – eeadev