获得用于播放7位数字剪辑的oauth签名

时间:2014-08-07 05:17:10

标签: android api oauth 7digital

我想播放从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。 请帮我解决这个问题。

2 个答案:

答案 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