Salesforce Rest API OAuth - 错误的响应错误

时间:2013-11-13 22:44:44

标签: c# rest oauth salesforce

此处的任何帮助表示赞赏。我只是试图对Oauth用户名 - 密码流进行基本调用。当我尝试调用GetResponse()时,它给我一个错误的请求(400)错误。

        string sessionId = String.Empty;

        string url = ConfigurationManager.AppSettings["SfdcLoginUrl"].ToString();

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://test.salesforce.com/services/oauth2/token");
        request.Method = "POST";
        request.ContentType = "application/json";

        StringBuilder sb = new StringBuilder();
        sb.Append("grant_type=password&");
        sb.Append("client_id=" + ConfigurationManager.AppSettings["ClientId"].ToString() + "&");
        sb.Append("client_secret=" + ConfigurationManager.AppSettings["ClientSecret"].ToString() + "&");
        sb.Append("username=" + HttpUtility.UrlPathEncode(username) + "&");
        sb.Append("password=" + HttpUtility.UrlPathEncode(password));

        System.Text.ASCIIEncoding encoding = new ASCIIEncoding();
        byte[] bytes = encoding.GetBytes(sb.ToString());

        request.ContentLength = bytes.Length;

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(bytes, 0, bytes.Length);
            requestStream.Close();
        }

        WebResponse response = request.GetResponse();

        StreamReader reader = new StreamReader(response.GetResponseStream());
        sessionId = reader.ReadToEnd();

2 个答案:

答案 0 :(得分:1)

只需将链接添加回官方文档https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_understanding_username_password_oauth_flow.htm

  

“您必须将用户的安全令牌附加到其密码上。安全令牌是从Salesforce自动生成的密钥。例如,如果用户的密码是mypassword,并且其安全令牌是XXXXXXXXXX,则为此参数提供的值必须是mypasswordXXXXXXXXXX。”

答案 1 :(得分:0)

密码应为密码+安全令牌,如果不是您在salesforce远程访问区域中列出的IP地址白色