Web アプリをAppDirectと統合しています。このため、jersey を使用して Java rs API を作成しました。
イベントにサブスクライブすると、リクエストに署名するための 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
次のテスト値も試しました。
- url = " https://www.appdirect.com/api/integration/v1/events/dummyOrder ";
- dummyKey = "ダミー";
- dummySecret = "秘密"; しかし、私は同じ結果を得ました。
どうすれば修正できますか?
私もこれを試して追加しました:
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
Authorization プロパティでも試してみました