/**
* Listing of all parameters necessary to retrieve a token (sorted
* lexicographically as demanded)
*/
String[][] data = {
{“oauth_callback”, “http%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11”},
{“oauth_consumer_key”, “ABi6JNTXan098WQGC3lMC0g4X”},
{“oauth_nonce”, “QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk”},
{“oauth_signature”, “FlLi3tvehgcraF8DMJ7OyxO4w9Y%3D”},
{“oauth_signature_method”, “HMAC-SHA1”},
{“oauth_timestamp”, “1272323042”},
{“oauth_version”, “1.0”}
};
/**
* Generation of the signature base string
*/
String signature_base_string =
"POST&"+URLEncoder.encode(url, "UTF-8")+"&";
for(int i = 0; i < data.length; i++) {
// ignore the empty oauth_signature field
if(i != 3) {
signature_base_string +=
URLEncoder.encode(data[i][0], "UTF-8") + "%3D" +
URLEncoder.encode(data[i][1], "UTF-8") + "%26";
}
}
// cut the last appended %26
signature_base_string = signature_base_string.substring(0,
signature_base_string.length()-3);
/**
* Sign the request
*/
// String CONSUMER_SECRET= “dMKzatMiPKeklRpQZfGFsdDzAFROgldMTlkiNK5E0KFGHsqaDU”;
Mac m = Mac.getInstance("HmacSHA1");
m.init(new SecretKeySpec("CONSUMER_SECRET".getBytes(), "HmacSHA1"));
m.update(signature_base_string.getBytes());
byte[] res = m.doFinal();
System.out.println("1111"+res);
String sig = String.valueOf(Base64Coder.encode(res));
System.out.println("2222"+sig);
// sig = “8wUi7m5HFQy76nowoCThusfgB%2BQ%3D”;
data[3][1] = sig;
/**
* Create the header for the request
*/
String header = "OAuth ";
for(String[] item : data) {
header += item[0]+"=\""+item[1]+"\", ";
}
// cut off last appended comma
header = header.substring(0, header.length()-2);
System.out.println("Signature Base String: "+signature_base_string);
System.out.println("Authorization Header: "+header);
System.out.println("Signature: "+sig);
String charset = "UTF-8";
URLConnection connection = new URL(url).openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Accept-Charset", charset);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
connection.setRequestProperty("Authorization", header);
connection.setRequestProperty("User-Agent", "XXXX");
OutputStream output = connection.getOutputStream();
output.write(header.getBytes(charset));
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
소스는 위와 같습니다
https://api.twitter.com/oauth/request_token 로 데이터를 보내고있습니다
Signature Base String: POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252Fthe_dance%252Fprocess_callback%253Fservice_provider_id%253D11%26oauth_consumer_key%3DABi6JNTXan098WQGC3lMC0g4X%26oauth_nonce%3DQP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1272323042%26oauth_version%3D1.0
Authorization Header: OAuth oauth_callback=“http%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11”, oauth_consumer_key=“ABi6JNTXan098WQGC3lMC0g4X”, oauth_nonce=“QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk”, oauth_signature=“UzNTgTYKLFP5wXeAQvF/Uys3gUQ=”, oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“1272323042”, oauth_version=“1.0”
Signature: UzNTgTYKLFP5wXeAQvF/Uys3gUQ=
java.io.IOException: Server returned HTTP response code: 400 for URL: https://api.twitter.com/oauth/request_token
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at Request.read(Request.java:98)
at Request.main(Request.java:113)
콘솔에 400에러가 뜨네요 도와주세요 …
아참참 https://api.twitter.com/oauth/request_token 그냥 크롬이나 익스에 이렇게 주소만 쳤을경우 url이 오타인지 확인해보라고하던데 뭐가 에러일가요 ???