无法从 Postman 访问 Salesforce api

Cannot access Salesforce api from Postman

我正在尝试测试需要向 Salesforce api 发送 http 请求的应用程序(Azure 函数)。这适用于 Visual Studio 和 Azure DevOps 管道中的单元测试。但是当我尝试使用 Postman 测试 Azure 函数时,出现错误:{"error":"invalid_grant","error_description":"authentication failure"}

我尝试将连接的应用程序的“IP 限制”设置为“放宽 IP 限制”,但没有帮助。

这是我的代码:

_httpClient = new HttpClient();

HttpContent content = new FormUrlEncodedContent(new Dictionary<string, string>
{
    {"grant_type", "password"},
    {"client_id", sfClientId},
    {"client_secret", sfClientSecret},
    {"username", sfUserName},
    {"password", $"{sfPassword}{sfToken}"}
});

message = _httpClient.PostAsync(LoginEndpoint, content).Result;

response = message.Content.ReadAsStringAsync().Result;

您在 Salesforce 设置中的用户登录历史记录中看到了什么。您可能需要将“security token”附加到密码(这与 OAuth key/secred 分开)。或者将您的 IP 添加到设置 -> 网络访问。

编辑:

如果它正确地附加了安全令牌,您就不需要在设置 -> 网络访问中添加您的 IP,太棒了。我不熟悉您使用的语法。这会自动对参数进行 urlencode 并正确设置 Content-Type 吗?

你能试试原始无聊的手工制作的 http 吗?

POST /services/oauth2/token HTTP/1.1
Host: test.salesforce.com
Content-Type: application/x-www-form-urlencoded

grant_type=password&client_id=3MVG9redacted&client_secret=3B8AE4C8ADredacted&username=user.name%40example.com.introccp%09&password=Hunter2PlusToken

(注意我有%40但是如果你使用Postman的x-www-form-urlencoded选项应该可以正常输入)

如果还是报错,尝试消除token。看登录历史,会有你的IP。将其添加到设置 -> 网络访问。

类似的东西