使用fatsecret food api时无效的oauth签名错误

时间:2013-08-22 08:14:20

标签: iphone oauth error-handling

我在我的iphone应用程序中遇到了FatSecret REST api的无效oauth签名问题。以下是回复 error = { code = 8; message = "Invalid signature: oauth_signature 'giWu0JtjgG3OBqD_sBCByz-Q2Gk='"; };

我正在使用HMAC_SHA1创建签名请求,对于某些搜索,它返回正确的签名,在某些情况下,它为food.get和food.search方法提供上述错误

任何帮助都会有用 在此先感谢!!

3 个答案:

答案 0 :(得分:5)

我发现让oauth与FatSecret合作相当乏味。当您向他们发送有关oauth问题的电子邮件时,他们会将您引导至他们的Google群组。最终,我在那里得不到多少帮助,但是当我最终弄清楚时,我确实发布了我的实施。

这是一个完整的node.js foods.search() implementation - 可能值得一看

答案 1 :(得分:1)

由于oauth签名编码不正确而发生。根据RFC2045协议生成的摘要应该是base64编码的。

通过在生成o_auth签名时将字符串“_”的出现替换为“/”并将“ - ”替换为“+”来获得解决方案。

希望它能帮助其他用户:)

答案 2 :(得分:0)

我发现如果base64编码的oAuth签名有任何空格(在RFC3986进行url编码后为“+”),我也会收到无效的签名响应。我检查了oAuth签名字符串不包含有问题的字符,如果有,我重新生成了oAuth签名。我使用自1970年以来的时间间隔作为时间戳(根据API的要求)和nonce,因此在没有空格存在之前重新创建随机数和时间戳是一件简单的事情。