我正尝试从Salesforce通过oauth获取我的应用程序中的所有联系人。我得到远程服务器返回错误:(400)错误的请求。试图通过我的回调页面上的API令牌网址获取访问令牌。甚至当我复制URL并直接粘贴到URL时,它会给我提供正确的数据。但无法获得Access令牌。(400)Bad Request:获取Salesforce的AccessToken
我正在使用下面的方法获取访问令牌。请专家建议我在哪里做错了。 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);
}
请帮我解决这个问题。
什么是HTTP响应的主体?这通常会解释错误。 – smarx
你能澄清你的意思吗?“甚至当我复制URL并直接粘贴到URL时,它会给我正确的数据”? – Crowcoder
调试时我得到的URL来获取响应。我有复制该URL并直接粘贴到浏览器上,它显示正确的XML与访问令牌。但在代码中给出错误。 – Vijjendra