我正在使用Java实现oauth以及以下序列:
1)发送POST https://api.twitter.com/oauth/request_token(带回调)Twitter响应包含oauth_token,oauth_token_secret和oauth_callback_confirmed = true
2)重定向到https://api.twitter.com/oauth/authenticate?oauth_token = {来自Twitter的先前回复的oauth_token}
3)出现Twitter登录表单,我点击"登录"按钮.
4)Twitter重定向到{callback_url}?oauth_token = {此标记等于来自oauth/request_token响应的标记}&oauth_verifier = {verifier}
5)POST https://api.twitter.com/oauth/access_token,Oauth标头包含oauth_token,邮件正文包含oauth_verifier = {return verifier}
6)Twitter响应=处理您的OAuth请求时出错:oauth_verifier参数无效
oauth_verifier有什么问题?
计算签名方法:
private static String computeSignature(String baseString, String keyString) throws GeneralSecurityException, UnsupportedEncodingException {
SecretKey secretKey = null;
byte[] keyBytes = keyString.getBytes();
secretKey = new SecretKeySpec(keyBytes, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(secretKey);
byte[] text = baseString.getBytes();
return new String(Base64.encodeBase64(mac.doFinal(text))).trim();
}
Run Code Online (Sandbox Code Playgroud)
第一次请求的代码:
String oauth_signature_method = "HMAC-SHA1";
// generate any fairly random alphanumeric string as the "nonce".
String uuid_string = UUID.randomUUID().toString();
uuid_string = …Run Code Online (Sandbox Code Playgroud)