是否可以使用OAuth 1.0发送带有正文的帖子?

时间:2019-07-05 12:12:53

标签: c# .net wordpress post oauth

我正在尝试将带有正文的POST请求发送到WordPress API。我仍然收到401错误。

我决定使用:https://gist.github.com/DeskSupport/2951522通过OAuth 1.0进行授权,它与GET方法完美配合。然后我想实现另一种发送简单正文的方法。

那是我的代码:

            var oauth = new OAuth.Manager();
            oauth["consumer_key"] = _consumerKey;
            oauth["consumer_secret"] = _consumerSecret;
            oauth["token"] = _accessToken;
            oauth["token_secret"] = _tokenSecret;


            var appUrl = _baseUrl + url;
            var authzHeader = oauth.GenerateAuthzHeader(appUrl, "POST");

            string body = GenerateBody(parameters);
            byte[] encodedData = Encoding.ASCII.GetBytes(body);

            var request = (HttpWebRequest)WebRequest.Create(appUrl);
            request.Method = "POST";
            request.PreAuthenticate = true;
            request.AllowWriteStreamBuffering = true;
            request.Headers.Add("Authorization", authzHeader);
            request.ContentLength = encodedData.Length;
            request.ContentType = "application/x-www-form-urlencoded";

            Stream newStream = request.GetRequestStream();
            newStream.Write(encodedData, 0, encodedData.Length);

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {

                }
            }

GenerateBody方法的结果为user_login=login&user_pass=BXE&04K44DoR1*a

我还尝试将'&'字符更改为'%26',但是它不起作用。

此请求通过邮递员运行,我不知道这是怎么回事。

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。

https://blog.dantup.com/2016/07/simplest-csharp-code-to-post-a-tweet-using-oauth/

这个人写下了提出此请求的方式。同样重要的是,您必须为唯一令牌更改oauth_nonce。