私はOAuth 1.0認証プロセスの最初のステップを完了し、不正なリクエストトークンを取得しようとしています。C#でOAuth 1.0経由でWordPressに接続すると、OAuth署名が一致しないのはなぜですか?
私は401 OAuthの署名がWordPressからのエラーと一致していない取得し続けます。私はPostmanを使用するとき、私が計算した署名はPostmanが計算する署名とは異なるので、私が署名をハッシュしている方法に問題があることを知っています。また、私は正常に郵便配達員を介して取得し、未承認のリクエストトークンを取得することができます。
私はハッシュを計算するのに間違っていますか?私はHMAC-SHA1を使用しています。
private void AuthorizeWP()
{
string requestURL = @"http://mywordpressurl.com/oauth1/request";
UriBuilder tokenRequestBuilder = new UriBuilder(requestURL);
var query = HttpUtility.ParseQueryString(tokenRequestBuilder.Query);
query["oauth_consumer_key"] = "myWordPressKey";
query["oauth_nonce"] = Guid.NewGuid().ToString("N");
query["oauth_signature_method"] = "HMAC-SHA1";
query["oauth_timestamp"] = (Math.Truncate((DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds)).ToString();
string signature = string.Format("{0}&{1}&{2}", "GET", Uri.EscapeDataString(requestURL), Uri.EscapeDataString(query.ToString()));
string oauth_Signature = "";
using (HMACSHA1 hmac = new HMACSHA1(Encoding.ASCII.GetBytes("myWordPressSecret")))
{
byte[] hashPayLoad = hmac.ComputeHash(Encoding.ASCII.GetBytes(signature));
oauth_Signature = Convert.ToBase64String(hashPayLoad);
}
query["oauth_signature"] = oauth_Signature;
tokenRequestBuilder.Query = query.ToString();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(tokenRequestBuilder.ToString());
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}