首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oAuth刷新令牌Fiddler,用于桌面应用程序的c# oAuth夏普示例

oAuth刷新令牌Fiddler,用于桌面应用程序的c# oAuth夏普示例
EN

Stack Overflow用户
提问于 2017-06-20 15:15:09
回答 1查看 1.8K关注 0票数 0

为了让我可以在桌面应用程序中进行产品调用,我已经尝试了很多个小时了。我能够使用开发人员控制台生成的访问令牌来使用restsharp进行http Get调用,但是在旧的访问令牌过期(即一个小时)之后,我无法得到一个Put来获得新的访问令牌。我也试着使用fiddler,但是不断地得到"HTTP 400坏请求“错误。

ChannelAdvisor开发人员-文档:链接

更新访问令牌

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

我不能让这个在雷斯特夏普,经过数百个帖子和论坛在oauth,Restsharp谷歌的例子,任何事情。除了http 400或invalid_client之外,试图获得其他任何响应都是令人恼火的。这就是一篇文章所说的解决办法,因为restsharp自动神奇地将一些东西添加到呼叫中,并认为使用清楚的参数是有好处的。

RestSharp码

代码语言:javascript
复制
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);

于是,我走到fiddler那里,把示例代码粘贴到便签板上,添加了我的令牌,但没有结果。

代码语言:javascript
复制
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使用身份验证用户名、密码很简单,但我需要更多soap不提供的信息。任何帮助都是非常感谢的,最好是使用信道顾问调用格式的一个小提琴或restsharp示例。

EN

回答 1

Stack Overflow用户

发布于 2017-06-21 17:38:40

我为了让它发挥作用而做的事。

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44656949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档