oAuth刷新令牌Fiddler,桌面应用程序

时间:2017-06-20 15:15:10

标签: c# oauth fiddler restsharp

尝试将oauth计算好几个小时,以便我可以在桌面应用中进行产品调用。我能够使用开发人员控制台生成的访问令牌来使用restsharp进行http Get调用,但是在旧的访问令牌过期(即一小时)之后,我无法获得一个Put来工作以获取新的访问令牌。我也尝试使用fiddler,但继续得到" HTTP 400错误请求"错误。

ChannelAdvisor Developer-DOCUMENTATION:Link

更新访问令牌

(请原谅我不知道如何跳转到页面上的更新访问令牌。)

我无法让这个在Restsharp中工作,经过数百个关于oauth的帖子和论坛,restsharp谷歌示例,任何东西。尝试获取除http 400或invalid_client之外的任何响应都令人抓狂。这是一篇帖子所说的解决方法,因为restsharp自动神奇地在调用中添加了一些东西,并认为它有使用clear参数的优点。

RestSharp代码

string s = Convert.ToBase64String(Encoding.ASCII.GetBytes(creds.appID + ":" + creds.sharedSecret));

var client2 = new RestClient("https://api.channeladvisor.com/oauth2/token?grant_type=refresh_token&refresh_token=" + creds.refreshToken);

var request2 = new RestRequest();
request2.Method = Method.POST;
request2.Parameters.Clear();            
request2.AddHeader("Authorization", s);
request2.AddHeader("Content-Type", " application/x-www-form-urlencoded");
request2.AddHeader("Cache-Control", "no-cache");

IRestResponse response2 = client2.Execute(request2);

所以我去了提琴手,只是将示例代码粘贴到暂存器中并添加了我的代币,但无济于事。

POST /oauth2/token HTTP/1.1
Host: api.channeladvisor.com
Authorization: Basic MY_ENCODED_APPID:SHARED_SECRET
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

grant_type=refresh_token&refresh_token=xxxxxxxxxxxxxxxxxxxxxmNZtF-cpLy44DV4DQ9Q

这也会返回400错误。 soap API很简单,使用身份验证用户名和密码,但我需要更多肥皂不提供的信息。感谢任何帮助,最好是使用频道顾问调用格式的小提琴或者restsharp示例。

1 个答案:

答案 0 :(得分:1)

我做了什么才能让它发挥作用。

string s = Convert.ToBase64String(Encoding.ASCII.GetBytes(creds.appID + ":" + creds.sharedSecret));

            var client2 = new RestClient("https://api.channeladvisor.com/oauth2/token");

            var request2 = new RestRequest();
            request2.Method = Method.POST;
            request2.Parameters.Clear();
            request2.AddHeader("Authorization", "Basic " + s );
            request2.AddHeader("Content-Type", " application/x-www-form-urlencoded");
            request2.AddHeader("Cache-Control", "no-cache");
            request2.AddParameter("grant_type", "refresh_token");
            request2.AddParameter("refresh_token", creds.refreshToken);

            IRestResponse response2 = client2.Execute(request2);