C# Windows 8上的Oauth 1.0

C# Windows 8上的Oauth 1.0,c#,oauth,.net-4.5,async-await,C#,Oauth,.net 4.5,Async Await,我正在尝试使用OAuth 1.0来验证对某个Web服务的调用,这是我的C代码: 我从这里得到了OAuthBase类: 使用Fiddler,原始http请求如下所示: GET http://www.server.com/DeveloperAPI/category/d8d63626-99d7-4aff-abe7-542ad705d083/CK00001277?oauth_consumer_key=Rxxxx7LO&oauth_nonce=65xxx982&oauth_signatu

我正在尝试使用OAuth 1.0来验证对某个Web服务的调用,这是我的C代码:

我从这里得到了OAuthBase类:

使用Fiddler,原始http请求如下所示:

GET http://www.server.com/DeveloperAPI/category/d8d63626-99d7-4aff-abe7-542ad705d083/CK00001277?oauth_consumer_key=Rxxxx7LO&oauth_nonce=65xxx982&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1345xxxx20&oauth_version=1.0&oauth_signature=PhUxxxxOh%2FzIxCo8A%2BQBNxxxxy7E%3D HTTP/1.1
Accept: application/Json
Method: POST
Host: www.xxxx.com
Proxy-Connection: Keep-Alive

我创建的HTTP调用正确吗?

Hm。。真的,我会先用WireShark查看HTTP请求。例如,在测试服务器上,您可能会得到一些重定向和额外的初步身份验证cookie(httpclient将存储这些cookie),而在主服务器上,您不会得到,并且必须在调用sig生成器之前先得到它们。观察交通状况非常容易,它会让你确定区别是在你这边,还是在他们那边。有时,当您向Webdev提供一个包含原始数据包的日志文件时,他们会更加健谈:)

问题在于,当我创建签名时,我传递的是“POST”,但调用的是“GET”,因此这就解决了我的问题:

sig = oauth.GenerateSignature(URL, PublicKey, SecreteKey, "", "", "GET", oauth.GenerateTimeStamp(), oauth.GenerateNonce(), out normalizedUrl, out normalizedqueryparameters);

为什么要在问题上加上W8和WinRT?在我看来,它只不过是普通的C#和谷歌的库。我试着将它们标记为C#4.5(或5),但我找不到标记。我正在使用一些异步操作。我更改了标记。回到问题上来——我看没有什么错。会发生什么?有例外吗?服务返回错误?您是否尝试过检查用wireshark传输的内容?谢谢,我从服务器返回了一个错误。你是说一切看起来都很好?我应该联系网络服务器管理员。他们有一个测试API的门户网站,而且它很有效。所以我想我做错了什么。我使用了Fiddler,并在问题中添加了原始http调用,它不会将其作为POST方法发送,这可能是问题所在吗?是的,它肯定可能是:)是的,谢谢,结果是POST:)
sig = oauth.GenerateSignature(URL, PublicKey, SecreteKey, "", "", "GET", oauth.GenerateTimeStamp(), oauth.GenerateNonce(), out normalizedUrl, out normalizedqueryparameters);