相同的 OAuth 令牌提取在 .NET Core 3.1 中失败,但适用于完整的 .NET Framework
The same OAuth token fetch fails with .NET Core 3.1 but works with full .NET Framework
我正在将我们的代码从 .NET Framework 升级到 .NET Core 3.1,并且 运行 在我们处理 Salesforce 身份验证的服务之一中遇到问题 API。
Salesforce 令牌端点returns一个错误
Bad Request: {"error":"invalid_grant","error_description":"authentication failure"}
当我运行在 .NET Core 中编写代码时。当我使用完整的框架时,它工作得很好。
_tokenClient = factory.CreateClient("TokenClient");
_tokenClient.BaseAddress = new Uri(_options.TokenUrl);
HttpContent content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{"grant_type", "password"},
{"client_id", _options.ClientId},
{"client_secret", _options.ClientSecret},
{"username", _options.Username},
{"password", _options.Password},
});
var response = await _tokenClient.PostAsync("token", content);
完整的 .NET Framework 处理 url 编码的方式与 net-core 不同。我的参数中有一个包含 &
,这导致了这个问题。将其更改为 &
解决了问题...
我正在将我们的代码从 .NET Framework 升级到 .NET Core 3.1,并且 运行 在我们处理 Salesforce 身份验证的服务之一中遇到问题 API。
Salesforce 令牌端点returns一个错误
Bad Request: {"error":"invalid_grant","error_description":"authentication failure"}
当我运行在 .NET Core 中编写代码时。当我使用完整的框架时,它工作得很好。
_tokenClient = factory.CreateClient("TokenClient");
_tokenClient.BaseAddress = new Uri(_options.TokenUrl);
HttpContent content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{"grant_type", "password"},
{"client_id", _options.ClientId},
{"client_secret", _options.ClientSecret},
{"username", _options.Username},
{"password", _options.Password},
});
var response = await _tokenClient.PostAsync("token", content);
完整的 .NET Framework 处理 url 编码的方式与 net-core 不同。我的参数中有一个包含 &
,这导致了这个问题。将其更改为 &
解决了问题...