//YahooSocialAuthInfo has all the variables required ie. accessToken, Secret, oauth session handle and guid.
YahooSocialAuthInfo ysai=(YahooSocialAuthInfo)getSNAuthInfo(authData);
HashMap<String,String> params = new LinkedHashMap<String,String>();
params.put("oauth_session_handle",ysai.getOauthSessionHandle());
String requestUrl="https://api.login.yahoo.com/oauth/v2/get_token";
String responseString=getHTTPTransmitResponseXML(ysai, "GET", requestUrl, params);
public String getHTTPTransmitResponseXML(YahooSocialAuthInfo ysai,String methodType,String requestUrl, HashMap<String,String> paramMap){
String responseXML=null;
if(ysai!=null&&requestUrl!=null){
String timestamp = String.valueOf(System.currentTimeMillis()/1000);
String nonce = String.valueOf("OMB"+System.currentTimeMillis());
String acctoken=ysai.getOauthToken();
String accSecret=ysai.getOauthTokenSecret();
HashMap<String,String> headerMap = new LinkedHashMap<String, String>();
if(paramMap==null)
paramMap = new LinkedHashMap<String,String>();
headerMap.put("Accept", "*");
paramMap.put("oauth_consumer_key", YahooSocialAppInfo.apiKey);
paramMap.put("oauth_nonce", nonce);
paramMap.put("oauth_signature_method", "HMAC-SHA1");
paramMap.put("oauth_timestamp", timestamp);
paramMap.put("oauth_token", acctoken);
paramMap.put("oauth_version", "1.0");
try{
String baseString = getBaseString(methodType, requestUrl, paramMap);
log.debug("baseString is : "+baseString);
String signature = getSignatureHMAC(baseString,YahooSocialAppInfo.sharedSecret+"&"+accSecret).trim();
paramMap.put("oauth_signature", signature);
HttpTransmit httpTransmit = new HttpTransmit();
HttpMessageInfo httpMessageInfo = new HttpMessageInfo();
HttpProtocolInfo httpProtocolInfo = new HttpProtocolInfo();
HttpResponseInfo httpResponseInfo = null;
httpProtocolInfo.setHttpURL(requestUrl);
SNCommonHelper.setProxy(httpProtocolInfo);
httpMessageInfo.setMessageContentType("text/plain");
httpMessageInfo.setHeaderMap(headerMap);
httpMessageInfo.setParameterMap(paramMap);
if(methodType.equals("GET")){
httpResponseInfo = httpTransmit.sendGET(httpProtocolInfo, httpMessageInfo);
}
if (httpResponseInfo!= null && httpResponseInfo.statusCode == HttpStatus.SC_OK) {
log.trace("status code : "+httpResponseInfo.statusCode);
responseXML = httpResponseInfo.responseBody;
}
return responseXML;
}
public String getBaseString(String methodType, String url, Map<String, String> params){
StringBuffer sb = new StringBuffer();
String paramVal = null;
boolean isFirst = true;
StringBuffer baseStrBuff = new StringBuffer();
baseStrBuff.append(methodType+"&"+escape(url));
try{
Collection<String> keySet= params.keySet();
for (String paramName : keySet) {
if( isFirst ) isFirst = false;
else sb.append("&");
paramVal = escape(params.get(paramName));
sb.append(paramName+"="+paramVal);
}
}catch(Exception ex){
log.error("Exception is : "+ex,ex);
}
log.debug("Query : "+sb.toString());
if( sb.length()>0 ){
baseStrBuff.append("&"+escape(sb.toString()));
}
return baseStrBuff.toString();
}
IM USING these same methods of HTTP transmit and getBaseString in all of my calls. But it's only refusing the signature in the case of REFRESHING TOKEN.
Kindly suggest
Thanks