一直试图将oauth映射多个小时,因此我可以在桌面应用程序中进行产品调用。我能够使用由开发者控制台生成的访问令牌使用restsharp进行http获取调用,但是我无法让旧的访问令牌在一个小时过期后获得新的访问令牌。我也尝试使用fiddler,但不断收到“HTTP 400错误请求”错误。oAuth刷新令牌Fiddler,用于桌面应用程序的c#restsharp示例
的ChannelAdvisor开发的文档:Link
更新访问令牌
(请原谅我不知道如何跳转到在页面上更新访问令牌以及无知。)
我无法得到这个工作在Restsharp,数百个关于oauth的帖子和论坛,restsharp谷歌的例子,任何东西。试图获得除HTTP 400或invalid_client以外的任何响应令人生气。这是一个帖子所说的解决方法,因为restsharp会自动将魔术般的东西添加到调用中,并认为它使用明确的参数有优点。
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示例。
你需要把refreshtoken东西(grant_type = refresh_token&refresh_token =” + creds.refreshToken)在你请求的主体,而不是将其添加为URL参数。此外,你还缺少‘基本’在你的授权头 – PtrBld
@PtrBld让我朝着正确的方向前进 – zerodoc