对于withings API,Oauth签名失败

时间:2015-01-05 10:31:27

标签: java spring rest withings

我正在努力将我的应用程序与带有弹簧休息模板的Withings api集成。

但是,在生成Oauth签名时,我得到了#34;无效签名"。我试图根据API规范设计签名,但我无法成功生成它。我已经提到了我使用过的代码。请给我一些解决方案。

private String generateSignature(String baseString, String secret) throws          UnsupportedEncodingException {
    String secretKey = consumerSecret + "&";


    SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes(), HMAC_SHA1SignatureMethod.SIGNATURE_NAME);
    HMAC_SHA1SignatureMethod hmacsha = new HMAC_SHA1SignatureMethod(keySpec);
    String signatureString = hmacsha.sign(baseString);
    String base64Encode = new String((signatureString.getBytes()));
    signature = URLEncoder.encode(base64Encode, "UTF-8");

供参考,http://oauth.withings.com/api

1 个答案:

答案 0 :(得分:1)

我之前遇到过同样的问题,似乎签名需要你的params(api params + oauth params)按字母顺序排序。

您还需要在使用基于uri的签名时给出正确的秘密词。

你可以检查你是否想要我的php oauth lib(更具体的是在AbstractService.php中) https://github.com/huitiemesens/PHPoAuthLib(它是原始phpoauthlib的一个分支,具有跟踪apis的特定顺序......)