I want to generate a Salesforce access token programmatically using the method below, “GetAccessTokenAsync”. I’ll then pass the token to my various methods that retrieve rows using GET.
(1) When I POST this from Postman, I get a 200 OK and an access token is returned.
https://ami-staging.my.salesforce.com/services/oauth2/token?grant_type=password&client_id=&client_secret=&username=myorg@force.com&password=
(2) I used the </> icon on Postman to generate code in c#. When I run that method from Visual Studio, I get a 400 Bad Request. I’ve triple-checked all my strings (client_id, client_secret, username, password) to make sure that what I’m using in Postman is identical to the inputs below. I don’t think the problem is the strings.
I would appreciate suggestions that anyone might have. Thank you!
public static async Task<string> GetAccessTokenAsync()
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post,
"https://ami-staging.my.salesforce.com/services/oauth2/token?grant_type=password&" +
"client_id=myid&" +
"client_secret=mysecret&" +
"username=myorg@force.com&" +
"password=mypassword");
var collection = new List<KeyValuePair<string, string>>();
collection.Add(new("grant_type", "urn:ietf:params:oauth:grant-type:jwt-bearer"));
collection.Add(new("assertion", ""));
var content = new FormUrlEncodedContent(collection);
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
await response.Content.ReadAsStringAsync();
return "test";
}