簡體   English   中英

(400)錯誤的請求:獲取Salesforce的AccessToken

[英](400) Bad Request : Get AccessToken of Salesforce

我正在嘗試通過我的應用程序中的oauthSalesforce獲取所有聯系人。 我正在獲取遠程服務器返回錯誤:(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM