我想播放从 Echonest API 获得的 7Digital 剪辑的预览。为此,我想以编程方式为每个请求生成 oauth 签名。
播放剪辑的网址 - http://previews.7digital.com/clip/1234 但它需要 2 条腿的 oAuth。
为此,我使用了从 stackoverflow 获得的以下代码。
private static final String HMAC_SHA1 = "HmacSHA1";
private static final String ENC = "UTF-8";
private String getSignature(String url, String params)
throws UnsupportedEncodingException, NoSuchAlgorithmException,
InvalidKeyException {
StringBuilder base = new StringBuilder();
base.append("GET&");
base.append(url);
base.append("&");
base.append(params);
System.out.println("String for oauth_signature generation:" + base);
byte[] keyBytes = (DIGITAL_CONSUMER_SECRET + "&").getBytes();
SecretKey key = new SecretKeySpec(keyBytes, HMAC_SHA1);
Mac mac = Mac.getInstance(HMAC_SHA1);
mac.init(key);
return new String(base64.encode(mac.doFinal(base.toString().getBytes(
ENC))), ENC).trim();
}
但是当我点击播放剪辑的最终网址时,我收到了无效的签名错误。
当我使用 7digital 工具生成 url 时,我可以播放剪辑。http://7digital.github.io/oauth-reference-page/
但是我需要为每个播放请求以编程方式生成最终 url。帮我解决这个问题。