Google GData Java 2腿OAuth签名验证失败
我的消费者代码如下:Google GData Java 2腿OAuth签名验证失败,oauth,gdata,oauth-provider,2-legged,Oauth,Gdata,Oauth Provider,2 Legged,我的消费者代码如下: GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); oauthParameters.setOAuthConsumerKey(consumerKey); oauthParameters.setOAuthConsumerSecret(secretKey); oauthParameters.setOAuthNonce(nonce);
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(consumerKey);
oauthParameters.setOAuthConsumerSecret(secretKey);
oauthParameters.setOAuthNonce(nonce);
oauthParameters.setOAuthTimestamp(timestamp);
oauthParameters.setOAuthSignatureMethod(signatureMethod);
validateTimestampAndNonce(otimestamp, nonce);
OAuthHmacSha1Signer signer = new OAuthHmacSha1Signer();
String baseString = OAuthUtil.getSignatureBaseString(baseUrl,httpMethod, baseParameters);
String signature = signer.getSignature(baseString, oauthParameters);
return signature.equals(oauthParams.getOauthSignature())
GoogleOAuthParameters oauthParameters=新的GoogleOAuthParameters()
我的OAuth服务器端代码如下:
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(consumerKey);
oauthParameters.setOAuthConsumerSecret(secretKey);
oauthParameters.setOAuthNonce(nonce);
oauthParameters.setOAuthTimestamp(timestamp);
oauthParameters.setOAuthSignatureMethod(signatureMethod);
validateTimestampAndNonce(otimestamp, nonce);
OAuthHmacSha1Signer signer = new OAuthHmacSha1Signer();
String baseString = OAuthUtil.getSignatureBaseString(baseUrl,httpMethod, baseParameters);
String signature = signer.getSignature(baseString, oauthParameters);
return signature.equals(oauthParams.getOauthSignature())
上面的签名验证失败了,我不知道哪里出了问题。请帮忙 我找到了原因。OAuth 1.0a规范第9.1.2节定义签名基字符串包括请求绝对URL。因此,如果这在服务器端与在消费者端不同,那么签名验证将失败。因此,在我的案例中,在消费者端,我使用 127.0.0.1 对于请求URL的主机名和我使用的服务器端 本地主机 作为主机名,这是错误的。将使用者更改为使用localhost作为主机名后,我可以成功地进行签名验证