Can';无法通过401未经授权的推特流API Oauth

Can';无法通过401未经授权的推特流API Oauth,api,twitter,streaming,Api,Twitter,Streaming,我正在尝试构建一个c#模块,以使用OAuth(现在是唯一的选项)连接到Twitter流API。我已经到了我的模块将使用GET成功访问api url的地步,但是我尝试和发出POST请求的所有操作都会失败 我已经通过使用我的Twitter应用程序页面上的OAuth工具选项卡,并在代码中固定nonce和timestamp的值,检查了我的签名是否正确。我已经为Windows设置了curl,并且可以验证它是否与OAuth工具生成的示例curl脚本一起工作(顺便说一句,这需要对引号进行一些更正,以使其适用于

我正在尝试构建一个c#模块,以使用OAuth(现在是唯一的选项)连接到Twitter流API。我已经到了我的模块将使用GET成功访问api url的地步,但是我尝试和发出POST请求的所有操作都会失败

我已经通过使用我的Twitter应用程序页面上的OAuth工具选项卡,并在代码中固定nonce和timestamp的值,检查了我的签名是否正确。我已经为Windows设置了curl,并且可以验证它是否与OAuth工具生成的示例curl脚本一起工作(顺便说一句,这需要对引号进行一些更正,以使其适用于Windows Cmd中的curl。在不需要引号的值上去掉单引号,在需要引用的任何值上使用双引号,在授权标头上使用双引号,并在标头内用反斜杠转义双引号)

我甚至在跟踪模式下运行curl并从我的c#代码输出我在post正文中发送的字节,我可以验证它们是否相同

我正在尝试使用“track=twitter”作为帖子正文访问“”。标题为:

Accept: */*
User-Agent: curl/7.21.7(amd64-pc-win32) libcurl/7.21.7 OpenSSL/0.9.8rzlib/1.2.5
Content-Type: application/x-www-form-urlencoded
Host: stream.twitter.com
Content-Length: 13
Connection: Keep-Alive
Authorization: OAuth <the oauth stuff>
接受:*/*
用户代理:curl/7.21.7(amd64-pc-win32)libcurl/7.21.7 OpenSSL/0.9.8rzlib/1.2.5
内容类型:application/x-www-form-urlencoded
主持人:stream.twitter.com
内容长度:13
连接:保持活力
授权:OAuth
我无法检查发送的数据包,以检查线路上的请求是否与SSL编码的请求相同


有什么想法吗?

我终于让它起作用了。如果你有我发现的这种问题,可能会对你有所帮助:

  • 最初我遇到了一个问题,因为每次访问代码位时我都会创建一个新的nonce。这意味着用于生成签名密钥的nonce与头中的不同。显然失败了

  • 然后我遇到了上面的问题。问题是我在发送请求正文后向请求中添加了OAuth头。出于某种原因,它似乎会在您向请求流写入帖子时立即发送请求

  • 这在查找2时非常有用。我发现了如何使用Fiddler从代码跟踪web请求。基本上,您需要做的就是将此添加到您的web.config:

    <system.net>
      <defaultProxy>
        <proxy  proxyaddress="http://127.0.0.1:8888" />
      </defaultProxy>
    </system.net>
    
    选择权

    然而,我的请求超时时遇到了一个问题。奇怪的是,这是由Fiddler代理响应的事实造成的。一旦我再次从我的web.config中删除了上述内容,一切都正常了。哈利路亚

    -x 127.0.0.1:8888