Hi all,
I am newbie, just trying to call method to get user info in rummble.
I've tried following the guideline for authentication and signature
from
developer.rummble.com but so far I can not get the signature part
correct. I think I've got the authentication part correct so far. I am
using Scribe library
http://wiki.github.com/fernandezpablo85/scribe/getting-started
to test my application.
So far, I am using Scribe for generating request token and access
token. For getting the verifier I paste the authorization URL manually
(for this stage) and enter the verification code back to my
application using JOptionPane dialog.
From all the generated signature I manually construct API call URL to
rummble website, but so far I've been getting error code 101 Incorrect
Signature. I am not very sure about "MD5" part as explained in the
Signature Guide:
- calculate the md5() hash of this string in lower case
- append this value to the argument list with the name
oauth_signature, in hexidecimal string form
This is my code:
-----------------------------------------------------------
package rummblemultiprofilertest;
import com.vladium.utils.PropertyLoader;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Properties;
import javax.swing.JOptionPane;
import org.scribe.oauth.Scribe;
import org.scribe.oauth.Token;
/**
*
* @author n7374186
*/
public class Main {
public static final String DATE_FORMAT_NOW = "yyyy-MM-
dd_HH:mm:ss";
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Properties properties = new Properties();
try {
properties = PropertyLoader.loadProperties("org/scribe/eq/
rummble.properties");
} catch (Exception ex) {
ex.printStackTrace();
}
Scribe scribe = new Scribe(properties);
System.out.println("Generating request token ... ");
Token requestToken = scribe.getRequestToken();
System.out.println("Request Token: " +
requestToken.getToken());
System.out.println("Request Token Secret: " +
requestToken.getSecret());
System.out.println("Now we need to authorize our request token
and get the verifier (manually) ... ");
JOptionPane.showMessageDialog(null, requestToken.getToken(),
"Request Token", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, "Now we need to authorize
our request token and get the verifier (manually) ... ");
String verifier = JOptionPane.showInputDialog(null, "Enter the
verification code here ... ");
System.out.println("Verifier: " + verifier);
System.out.println("Generating access token ... ");
Token accessToken = scribe.getAccessToken(requestToken,
verifier.trim());
System.out.println("Access Token: " + accessToken.getToken());
System.out.println("Access Token Secret: " +
accessToken.getSecret());
JOptionPane.showMessageDialog(null, accessToken.getToken(),
"Access Token", JOptionPane.INFORMATION_MESSAGE);
System.out.println("Method to call ..");
String method = JOptionPane.showInputDialog(null, "Enter the
method to call here ... ");
System.out.println("Generating signature string ... ");
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
String nonce = sdf.format(cal.getTime());
String baseSignatureString = "method=" + method +
"oauth_consumer_key=" + properties.getProperty("consumer.key") +
"oauth_nonce="+nonce+"oauth_token=" + accessToken.getToken() +
"version=1.0";
baseSignatureString = baseSignatureString +
properties.getProperty("consumer.secret")+accessToken.getSecret();
baseSignatureString = baseSignatureString.toLowerCase();
System.out.println("Base Signature String: " +
baseSignatureString);
MessageDigest m;
String finalSignatureString;
try {
m = MessageDigest.getInstance("MD5");
byte[] data = baseSignatureString.getBytes();
m.update(data, 0, data.length);
BigInteger i = new BigInteger(1, m.digest());
finalSignatureString = String.format("%1$032X", i);
//finalSignatureString =
finalSignatureString.toLowerCase();
System.out.println("Final Signature String: " +
finalSignatureString);
System.out.println("Final Signature String (lower case): "
+ finalSignatureString.toLowerCase());
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
//Logger.getLogger(Main.class.getName()).log(Level.SEVERE,
null, ex);
}
}
}
Thanks in anticipation for kind assistance. Very much appreciated ..
Regards
Endang
rummble id: edjuana