我们正在使用支持OAuth 2 legged验证的API。我越来越想经营我的休息锋利的客户OAuth1Authenticator时实行低于此错误:Restsharp oAuth 2 legged auth error:签名方法HMAC-SHA1的签名无效
消息:HTTP状态401 - 签名法HMAC-SHA1
说明无效签名:该请求需要HTTP认证(签名方法HMAC-SHA1的签名无效 )。
下面的代码片段:
var restClient = new RestClient(baseUrl);
restClient.Authenticator =
OAuth1Authenticator.ForProtectedResource(ConfigurationManager.AppSettings["ConsumerKey"],
ConfigurationManager.AppSettings["ConsumerSecret"], string.Empty, string.Empty);
var request = new RestRequest(relativePath);
request.AddParameter(new Parameter { Name = "username", Value = username, Type = ParameterType.QueryString });
request.AddParameter(new Parameter { Name = "firstname", Value = firstname, Type = ParameterType.QueryString });
request.AddParameter(new Parameter { Name = "surname", Value = surname, Type = ParameterType.QueryString });
request.AddParameter(new Parameter { Name = "email", Value = email, Type = ParameterType.QueryString });
request.AddParameter(new Parameter { Name = "password", Value = password, Type = ParameterType.QueryString });
request.Resource = string.Format(relativePath);
request.Method = Method.POST;
var response = restClient.Execute<object>(request);
在我看来,我们需要与要求通过签名。但是还没有想出如何使用RestSharp来传递。
有人能指点我正确的方向吗?
UPDATE
有趣的是,当我用下面定制OAuthBase类用于签名请求。它运作良好。 http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs
我真的很想在不写任何自定义代码的情况下使用RestSharp。不知道我到底做错了什么。
这看起来很有趣https://www.drupal.org/node/1991416其drupal的要点是签名不匹配,因为服务器和客户端使用不同的哈希机制 – 2015-04-05 03:15:24
看看你的链接,但我无法涉及此resharp问题。谢谢。 – 2015-04-05 03:30:33
您是否看过第一条评论?要点是检查服务器和客户端的签名是否使用相同的 – 2015-04-05 03:32:40