Twitter实施OAuth规格吗?(C#)

Gup*_*R4c 5 c# twitter oauth

现在我一直在与OAuth和Twitter争夺2周,试图实施它.经过多次重写我的代码后,我终于得到了一个执行请求的库,因为它应该基于1.0规范.我已经通过在Google Code上使用此验证程序以及来自Hueniverse的此验证程序验证了它.

我的版本,谷歌版本和Hueniverse版本都产生完全相同的签名,所以我得出的结论是我不再是原因(但我可以通过陈述这一点来填补我的嘴巴).

我通过首先使用Twitter的API控制台创建测试请求来测试我的实现,在这种情况下是状态更新.我将改变的参数,oauth_nonce和oauth_timestamp复制到上面提到的所有三个签名者中.所有其他参数总是相同的,令牌/秘密/等.

Twitter的控制台产生一个签名,但其他三个签名产生不同的签名(来自Twitter,彼此相同).

所以,我的问题是,为什么我得到这个:

<?xml version="1.0" encoding="UTF-8"?>
<hash>
    <request>/1/statuses/update.xml</request>
    <error>Could not authenticate with OAuth.</error>
</hash>
Run Code Online (Sandbox Code Playgroud)

...当我应该将规范实施到"T"时?

作为请求的一部分,Twitter是否需要特定的东西?我把Twitter生成的nonce统计为42个字符长,这是正确的吗?应该是42个字符吗?

我非常感谢任何对API有深入了解的人的帮助,而不是我明显拥有的......

提前致谢!

更新:有人问我如何发送身份验证参数,但后来删除了他们的帖子,idk为什么.无论如何,授权参数通过Authorization标头发送.

更新/解决方案: 向下移动到它所属的底部作为答案.

Gup*_*R4c 0

有点晚了,但根据 @poke 的建议,我在这里添加我的答案:

于是我就想通了,其实这很愚蠢。不久前,可能是重写 3,我从 Twitter 收到了错误的非 XML 响应。然后我在 Twitter API 控制台中看到它们转义了 header params: param=\"value\"。我添加了反斜杠,立即就得到了 XML 响应。所以它卡住了。

不管怎样,为了排除重写 7(或 8)中的所有问题,我决定从标头参数字符串中删除反斜杠,它解决了所有问题。

因此,从这一切中吸取的教训是,并非 Twitter API 控制台显示的所有内容都应该被模仿。我实际上会进一步建议 Twitter 更新控制台以显示发送时标头字符串的样子,而不是他们的系统内部生成的内容(解析反斜杠字符)。