![](/img/trans.png)
[英](400) Bad Request : Get AccessToken of Salesforce error:"invalid_grant"
[英](400) Bad Request : Get AccessToken of Salesforce
我正在嘗試通過我的應用程序中的oauth從Salesforce獲取所有聯系人。 我正在獲取遠程服務器返回錯誤:(400)錯誤的請求。 當嘗試通過我的回叫頁面上的API令牌URL獲取訪問令牌時 。 即使復制了URL並將其直接粘貼到URL,它也為我提供了正確的數據。 但無法獲取訪問令牌。
我正在使用以下方法獲取訪問令牌 。 請專家建議我在哪里做錯了。 對於Google和LinkedIn,同樣的方法也可以正常工作。
public async Task<TokenResponse> GetAccessToken(string code,string tokenUrl,string consumerKey,string consumerSecretKey,string redirecturl)
{
string responseFromServer = "";
var webRequest = WebRequest.Create(tokenUrl);
const string queryStringFormat = @"code={0}&client_id={1}&client_secret={2}&redirect_uri={3}&grant_type=authorization_code";
string contents = string.Format(queryStringFormat
, code
, consumerKey
, consumerSecretKey
, redirecturl);
webRequest.Method = "POST";
byte[] postcontentsArray = Encoding.UTF8.GetBytes(contents);
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = postcontentsArray.Length;
using (Stream requestStream = webRequest.GetRequestStream())
{
requestStream.Write(postcontentsArray, 0, postcontentsArray.Length);
requestStream.Close();
WebResponse response = webRequest.GetResponse();
using (Stream responseStream = response.GetResponseStream())
{
if (responseStream != null)
{
using (StreamReader reader = new StreamReader(responseStream))
{
responseFromServer = reader.ReadToEnd();
reader.Close();
responseStream.Close();
response.Close();
}
}
}
}
return JsonConvert.DeserializeObject<TokenResponse>(responseFromServer);
}
請幫助我解決此問題。
我正在毫無問題地連接到Salesforce,但是使用的是HttpClient而不是WebRequest。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
HttpContent content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{"grant_type", "password"},
{"client_id", _clientId},
{"client_secret", _clientSecret},
{"username", _userName},
{"password", _password}
}
);
using (var httpClient = new HttpClient())
{
var message =
await httpClient.PostAsync(_authorizationUrl, content).ConfigureAwait(false);
var responseString = await message.Content.ReadAsStringAsync().ConfigureAwait(false);
var obj = JObject.Parse(responseString);
var oauthToken = (string)obj["access_token"];
var serviceUrl = (string)obj["instance_url"];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.