c# - 使用 RestSharp 获取 ExactOnline 的访问 token 时出现 400 错误请求

标签 c# rest restsharp exact-online

我需要完成 ExactOnline 的 OAuth2 流程,但我陷入了文档的第 3 步 ( https://developers.exactonline.com/#OAuth_Tutorial.html%3FTocPath%3DAuthentication%7C_____2 )

我使用 Postman chrome 应用程序创建了以下 C# 代码来测试 http 请求,但不断收到 400 错误(错误请求)。 postman 应用程序也给了我 400 错误,但无论我设置什么设置,我似乎总是收到 400 错误。

var authToken = "veryyyyyylongtoken";
var redirectUri = "the-url-I-set-in-the-dashboard";
var grantType = "authorization_code";
var clientId = "id-guid";
var clientSecret = "secret";
var exactAccesTokenRequestEndpoint = "https://start.exactonline.nl/api/oauth2/token";

var client = new RestClient(exactAccesTokenRequestEndpoint);
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", String.Format("code={0}&redirect_uri={1}&grant_type={2}&client_id={3}&client_secret={4}", authToken, exactAccesTokenRequestEndpoint, grantType, clientId, clientSecret), ParameterType.RequestBody);
var response = client.Execute(request);

这段代码怎么错了?

在 Exact 注册的应用程序正在测试模式下运行,而不是在生产模式下运行。

有什么想法吗?

=====编辑=====

根据古斯曼的指示,我将代码更改为以下内容。这仍然会给出 400 错误。

var client = new RestClient(exactAccesTokenRequestEndpoint);
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("code", authToken, ParameterType.RequestBody);
request.AddParameter("redirect_uri", redirectUri, ParameterType.RequestBody);
request.AddParameter("grant_type", grantType, ParameterType.RequestBody);
request.AddParameter("client_id", clientId, ParameterType.RequestBody);
request.AddParameter("client_secret", clientSecret, ParameterType.RequestBody);
var response = client.Execute(request);

最佳答案

您的第一期是solved by Gusman .

我的猜测是第二个问题与您设置的 exactAccesTokenRequestEndpoint 有关。 Exact 对 URL 非常挑剔,我怀疑您拥有的 URL 是否是 EOL 中应用商店设置中描述的 URL。确保它至少是设置中给定的 URL。

因此,如果您的设置包含 http://localhost/abc/,您的 redirect_uri 应至少为 http://localhost/abc/ 而不是 http://localhost/abc,这可能看起来有效。

关于c# - 使用 RestSharp 获取 ExactOnline 的访问 token 时出现 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35209230/

相关文章:

c# - 如何检测 Microsoft Band 版本

c# - 如何在 ASP.NET Core 的 razor View 中渲染之前检查 View 组件是否存在

c# - 字符串的不区分大小写的哈希 (SHA)

javascript - Sails.js,Model.update() 抛出 ER_BAD_FIELD_ERROR : Unknown column 'undefined' in 'where clause'

c# - using() 并处理多个包装流

java - 将 REST\json httpclient4.2 切换为正常的 HttpURLConnection

json - MVVM 的异步 JSON REST 调用问题

c# - 如何使用 RestSharp 解析 JSON?

c# - restsharp 发出多个异步请求

c# - RestSharp序列化JSON数组请求参数