我想播放从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工具生成网址时,我可以播放剪辑。http://7digital.github.io/oauth-reference-page/
但我需要以编程方式为每个播放请求生成最终URL。 请帮我解决这个问题。
答案 0 :(得分:0)
7digital android sdk可以在这里找到并包含文档,以及生成Oauth签名的示例https://github.com/7digital/7digital-Android-SDK
答案 1 :(得分:0)
您正在编码整个基本字符串,而应分别对基本字符串的三个部分进行编码,'&' char必须不被编码。
使用我的OAuth参考页面将您生成的内容与参考实施进行比较:https://bettiolo.github.io/oauth-reference-page/
规范中有关于基本字符串生成的更多信息:http://oauth.net/core/1.0a/#anchor13