package com.socioboard.t_board_pro.twitterapi; import java.net.URLEncoder; import java.security.Key; import java.util.List; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.http.message.BasicNameValuePair; public class OAuthSignaturesGeneratorPostReq { public static final String ENCODING = "UTF-8"; public static final String VERSION_1_0 = "1.0"; public static final String FORM_ENCODED = "application/x-www-form-urlencoded"; public static final String OAUTH_CONSUMER_KEY = "oauth_consumer_key"; public static final String OAUTH_TOKEN = "oauth_token"; public static final String OAUTH_TOKEN_SECRET = "oauth_token_secret"; public static final String OAUTH_SIGNATURE_METHOD = "oauth_signature_method"; public static final String OAUTH_SIGNATURE = "oauth_signature"; public static final String OAUTH_TIMESTAMP = "oauth_timestamp"; public static final String OAUTH_NONCE = "oauth_nonce"; public static final String OAUTH_VERSION = "oauth_version"; public static final String OAUTH_CALLBACK = "oauth_callback"; public static final String OAUTH_CALLBACK_CONFIRMED = "oauth_callback_confirmed"; public static final String OAUTH_VERIFIER = "oauth_verifier"; public static final String HMAC_SHA1 = "HMAC-SHA1"; public static final String RSA_SHA1 = "RSA-SHA1"; public String accesToken; public String tokenSecret; public String cKey, cSecret; public String url, method; public String currentTimeStamp, currentOnonce; public OAuthSignaturesGeneratorPostReq(String accesToken, String tokenSecret, String cKey, String cSecret, String method) { super(); this.accesToken = accesToken; this.tokenSecret = tokenSecret; this.cKey = cKey; this.method = method; this.cSecret = cSecret; } public String getOauthSignature(List<BasicNameValuePair> peramPairs) { String oAuthSignature = null; // * * * 1 * * * * String GeneratedPerams = gentratedPerams(peramPairs); // * * * 2 * * * * String baseString = generateBaseString(GeneratedPerams); // * * * 3 * * * * String singningKey = genrateSigningKey(); // * * * 4 * * * * oAuthSignature = getCalcShaHash(baseString, singningKey); // * * * Done * * * * return oAuthSignature; } String gentratedPerams(List<BasicNameValuePair> peramPairs) { String GeneratedPerams = ""; GeneratedPerams = GeneratedPerams + "&" + OAUTH_CONSUMER_KEY + "=" + URLEncoder.encode(getcKey()) + "&" + OAUTH_NONCE + "=" + URLEncoder.encode(currentOnonce) + "&" + OAUTH_SIGNATURE_METHOD + "=" + URLEncoder.encode(HMAC_SHA1) + "&" + OAUTH_TIMESTAMP + "=" + URLEncoder.encode(currentTimeStamp) + "&" + OAUTH_TOKEN + "=" + URLEncoder.encode(getAccesToken()) + "&" + OAUTH_VERSION + "=" + URLEncoder.encode(VERSION_1_0); if (peramPairs.size() > 0) { for (int i = 0; i < peramPairs.size(); ++i) { if (i == 0) { GeneratedPerams = peramPairs.get(i).getName()+ "=" + URLEncoder.encode(peramPairs.get(i).getValue()).replace("+", "%20"); } else { GeneratedPerams = GeneratedPerams + "&" + peramPairs.get(i).getName() + "=" + URLEncoder.encode(peramPairs.get(i).getValue()) .replace("+", "%20"); } } } System.out.println("GeneratedPerams = " + GeneratedPerams); return GeneratedPerams; } String generateBaseString(String peramsUrl) { String baseString = null; // System.out.println("URLEncoder.encode("+url+") = "+ // URLEncoder.encode(url )); baseString = method + "&" + URLEncoder.encode(url) + "&" + URLEncoder.encode(peramsUrl); // System.out.println("baseString = "+ baseString); return baseString; } String genrateSigningKey() { String singningKey = null; singningKey = URLEncoder.encode(cSecret) + "&" + URLEncoder.encode(tokenSecret); System.out.println("genrateSigningKey = " + singningKey); return singningKey; } public String getAccesToken() { return accesToken; } public void setAccesToken(String accesToken) { this.accesToken = accesToken; } public String getAcessSecret() { return tokenSecret; } public void setAcessSecret(String tokenSecret) { this.tokenSecret = tokenSecret; } public String getcKey() { return cKey; } public void setcKey(String cKey) { this.cKey = cKey; } public String getUrl() { return url; } public void setUrl(String url) { currentTimeStamp = calcTstamp(); currentOnonce = calcOnonce(); this.url = url; } public String calcTstamp() { return new String("" + System.currentTimeMillis() / 1000); } public String calcOnonce() { String oNonce = new String("" + (System.currentTimeMillis()) / 1000 * 55); System.out.println("getOnonce = " + oNonce); return oNonce; } public String getCalcShaHash(String data, String key) { String oAuthSignature = null; try { Key signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1); Mac mac = Mac.getInstance(HMAC_SHA1); mac.init(signingKey); byte[] rawHmac = mac.doFinal(data.getBytes()); // Done String noUrlEncoding = Base64.encodeBytes(rawHmac); // Dircet oAuthSignature = noUrlEncoding; // perencoded // oAuthSignature = URLEncoder.encode(noUrlEncoding,"ISO-8859-1"); System.out.println("getCalcShaHash = " + oAuthSignature); } catch (Exception e) { e.printStackTrace(); System.out.println("Exception = " + e); } return oAuthSignature; } }