我們正在使用支持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