如何在OAuth中设置令牌密钥和消费者密钥?

时间:2012-04-16 18:29:17

标签: java android oauth-2.0

在这两个网站上,他们要求令牌秘密和消费者秘密: http://oauth.googlecode.com/svn/code/javascript/example/signature.html http://developer.netflix.com/resources/OAuthTest#instructions

如何以编程方式设置它们:

public void excecuteSigning(String targetURL){
            HttpRequestAdapter requestSig = new HttpRequestAdapter(new HttpGet("http://photos.example.net/photos"));
            HttpParameters requestparameters = new HttpParameters();
            OAuthMessageSigner signer = new HmacSha1MessageSigner();

requestparameters.put(OAuth.OAUTH_CONSUMER_KEY, "dpf43f3p2l4k3l03");        
            requestparameters.put(OAuth.OAUTH_TOKEN, "nnch734d00sl2jdk");
            requestparameters.put(OAuth.OAUTH_NONCE, "kllo9940pd9333jh");
            requestparameters.put(OAuth.OAUTH_TIMESTAMP, "1191242096");
            requestparameters.put(OAuth.OAUTH_SIGNATURE_METHOD, "HMAC-SHA1");
            requestparameters.put(OAuth.OAUTH_VERSION, "1.0");
            requestparameters.put("size", "original");
            requestparameters.put("file", "vacation.jpg");
            String OAUTH_SIG = signer.sign(requestSig, requestparameters);
            System.out.println(OAUTH_SIG);
}

///以上生成此签名:rYexRY70p6aDDWw0ox0SwERRK2w =

///下面的代码不会生成正确的签名

requestparameters.put("oauth_consumer_secret", "kd94hf93k423kf44");
            requestparameters.put(OAuth.OAUTH_TOKEN_SECRET, "pfkkdhi9sl3r4s00");

2 个答案:

答案 0 :(得分:0)

请包含您客户的完整源代码。使用您提供的值,google oauth测试链接会提供此签名 -

OAuth realm="",oauth_version="1.0",oauth_consumer_key="dpf43f3p2l4k3l03",oauth_token="nnch734d00sl2jdk",oauth_timestamp="1191242096",oauth_nonce="kllo9940pd9333jh",oauth_signature_method="HMAC-SHA1",oauth_signature="tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D"

您的客户生成什么签名值?

答案 1 :(得分:0)

OAuthMessageSigner signer = new HmacSha1MessageSigner();
     signer.setConsumerSecret(consumerSecret);
     signer.setTokenSecret(tokenSecret);

现在应该正常工作并生成正确的签名。