gpt4 book ai didi

c# - (400) 错误请求 : Get AccessToken of Salesforce error :"invalid_grant"

转载 作者:行者123 更新时间:2023-12-03 01:34:17 27 4
gpt4 key购买 nike

我正在使用带有以下代码的azure函数 -当我在本地运行 azure fucntion 时一切正常,但部署后出现以下错误

{"error":"invalid_grant","error_description":"authentication failure"}

功能代码 -

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.SystemDefault | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "tokenURL");
var keyValues = new List<KeyValuePair<string, string>>();
keyValues.Add(new KeyValuePair<string, string>("grant_type", "password"));
keyValues.Add(new KeyValuePair<string, string>("client_id", "clientID"));
keyValues.Add(new KeyValuePair<string, string>("client_secret", "clientSecret"));
keyValues.Add(new KeyValuePair<string, string>("username", "userName"));
keyValues.Add(new KeyValuePair<string, string>("password", "password"));

request.Content = new FormUrlEncodedContent(keyValues);
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
HttpResponseMessage response = await httpClient.SendAsync(request);

string respContent = await response.Content.ReadAsStringAsync();
var oauthResponse = JsonConvert.DeserializeObject<Dictionary<string, string>>(respContent);
string token = oauthResponse["access_token"];

Is there any other setting required from salesforce ?

Modify the Connected app: (Edit Policies) Relax IP restrictions

Permitted Usersto "All users may self-authorize"

最佳答案

这是我们在 Azure Functions 中的功能,它按预期工作。 ISalesforceConfigSettings 不是来自任何库,它是我们自己手写的接口(interface),其实现从环境变量中读取值。

    /// <summary>
/// Gets the Salesforce access token given the client_id, secret, username and password.
/// </summary>
/// <param name="log">Tracewriter log</param>
/// <param name="_settings">ISalesforceConfigSettings _settings</param>
/// <returns>A Salesforce access token</returns>
private async string GetSalesforceAccessToken(TraceWriter log, ISalesforceConfigSettings _settings)
{
var httpClient = new HttpClient();

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12;

// Create Request Body
var formContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("client_id", _settings.SalesforceClientId),
new KeyValuePair<string, string>("client_secret", _settings.SalesforceClientSecret),
new KeyValuePair<string, string>("username", _settings.SalesforceUserName),
new KeyValuePair<string, string>("password", _settings.SalesforcePassword),
new KeyValuePair<string, string>("grant_type", _settings.SalesforceGrantType)
});

try
{
// Call to get access token
var loginResponse = await httpClient.PostAsync(_settings.SalesforceLoginUrl, formContent);
var loginResponseString = await loginResponse.Content.ReadAsStringAsync();

// Log Login Response
log.Info(loginResponseString);

// Extract Access Token
return JsonConvert
.DeserializeObject<SalesforceLoginResponse>(loginResponseString)
.AccessToken;
}
catch (Exception ex)
{
log.Error(ex.Message);
throw;
}
}

以防万一,如果您想知道 SalesforceLoginResponse 类是什么...

using Newtonsoft.Json;

namespace Models.Salesforce
{
public class SalesforceLoginResponse
{
[JsonProperty("access_token")]
public string AccessToken { get; set; }
}
}

关于c# - (400) 错误请求 : Get AccessToken of Salesforce error :"invalid_grant",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59651689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com