所以我生成的 URL 与我们从 Withings 开发者网站获得的相同。
但是我得到了 {“status”:342}。
我正在使用 java 并在下面使用 oauth 随机数、时间戳和 oauth 签名
但是,当我用我从 Withings 网站获得的值替换这 3 个值时,它工作得很好。 我不明白我做错了什么。感谢任何帮助
- String.valueOf(Math.random()) 随机数
- System.currentTimeMillis()/1000L – 时间戳
使用下面的SecretKeySpec生成签名
获取
- > http://wbsapi.withings.net/measure?action=getmeas&userid=2---0
- oauth_consumer_key=00000000061e0bf7f7b109903040dc------&oauth_nonce=0.4509674797693397&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1414031787&oauth_token=00 0000-3b5f9e4704d270551e69b45db31de4ec88b4ebe03&oauth_version=1.0
最佳答案
生成 URL 时需要考虑的一件事是 URL 编码发生的时间/地点。一些很棒的工具,如 RestSharp,在生成时对字符串进行编码。如果您对 oauth_signature 进行了编码并将其作为参数添加到您的字符串中,它将再次进行编码。仔细观察您的最终字符串,以确保您没有对 oauth_signature 或其他生成的值进行双重编码。例如,编码后的 oauth_signature 中的 %3D 将在最终字符串中变为 %253D,并迅速生成 342 代码。
关于java - Withings Web API 调用签名问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26517181/