Reputation: 1948
I have this piece of code:
String yourUrl = "https://api.discogs.com/oauth/request_token";
String currentSeconds = String.valueOf(System.currentTimeMillis() / 1000);
String urlString = yourUrl + "?oauth_consumer_key=BaeIqWMTmCxjeJjwmkJr&oauth_nonce=random_string_or_timestamp&oauth_timestamp="+ currentSeconds + "&oauth_callback=http://localhost:8080&oauth_signature=ZWglyBtJasnJBqVnzyduYJggCduKeYks;
System.out.println(urlString);
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent", "test");
int statusCode = conn.getResponseCode();
but I have this error:
Status Code: 401
Invalid signature. Expected signature base string: ZWglyBtJasnJBqVnzyduYJggCduKeYks&
Upvotes: 0
Views: 184
Reputation: 793
According to the discogs oauth flow you shouldn't send params as request params, but rather should send it combined into Authorization header and do something like this:
String yourUrl = "https://api.discogs.com/oauth/request_token";
String currentSeconds = String.valueOf(System.currentTimeMillis() / 1000);
URL url = new URL(yourUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("User-Agent", "test");
conn.setRequestProperty("Authorization",
"OAuth oauth_consumer_key=\"BaeIqWMTmCxjeJjwmkJr\"," +
"oauth_nonce=\"" + System.currentTimeMillis() + "\"," +
"oauth_signature=\"ZWglyBtJasnJBqVnzyduYJggCduKeYks&\"," +
"oauth_signature_method=\"PLAINTEXT\"," +
"oauth_timestamp=\"" + currentSeconds + "\"," +
"oauth_callback=\"your_callback\""
);
int statusCode = conn.getResponseCode();
Upvotes: 1