我已经与 OAuth 和 Twitter 斗争了 2 周,现在试图实现它。在多次重写我的代码之后,我终于得到了一个执行请求的库,因为它应该基于 1.0 规范。我已经使用 this verifier on Google Code 验证了它, 和 this verifier from Hueniverse .
我的版本、谷歌版本和 Hueniverse 版本都产生了完全相同的签名,所以我得出结论,我不再是原因(但我可能会说这个是在打我的嘴......) .
我通过首先使用 Twitter 的 API 控制台创建测试请求来测试我的实现,在本例中是状态更新。我将更改的参数 oauth_nonce 和 oauth_timestamp 复制到上述所有三个签名者中。所有其他参数总是相同的, token / secret /等等。
Twitter 的控制台生成一个签名,但其他三个以上都生成不同的签名(来自 Twitter,彼此相同)。
所以,我的问题是,为什么我会得到这个:
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<request>/1/statuses/update.xml</request>
<error>Could not authenticate with OAuth.</error>
</hash>
...我应该在什么时候对“T”实现规范?
作为请求的一部分,Twitter 需要/想要什么具体的东西吗?我将 Twitter 生成的随机数计算为 42 个字符长,对吗?它应该是 42 个字符长吗?
如果有人比我更了解 API,我将不胜感激...
提前致谢!
更新:有人问我如何发送身份验证参数,但后来删除了他们的帖子,我不知道为什么。无论如何,授权参数是通过授权 header 发送的。
更新/解决方案: 作为答案向下移动到底部。
最佳答案
我在以 Twitter 作为主要目标实现 OAuth 规范时遇到的唯一问题是,Twitter 已将随机数限制为仅接受 ASCII 字符(而该规范实际上允许任何字节)。因此,我更改了我的实现以生成一个随机 int(60 位,所以长于 42 个字符)。
除此之外,Twitter 的实现似乎是完全正确的;至少我没有任何问题。
我建议您使用许多 OAuth 沙盒中的一些(例如 this 或 this)来真正检查是否一切正常,例如您是否将所有必要的内容都包含在签名中等。
关于c# - Twitter 实现 OAuth 是否超出规范? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169600/