【问题标题】:Salesforce marketing cloud API does not return an access/authorization tokenSalesforce 营销云 API 不返回访问/授权令牌
【发布时间】:2019-07-20 06:58:32
【问题描述】:

我有一个应用程序向营销云请求访问令牌以在后续请求中使用以访问 API。这是去年设计的,直到上周都可以正常工作。自 02/22 以来,相同的请求一直失败。以下是请求令牌的示例代码:

public static async Task<string> GetAuthorizationToken(string ClientId, string ClientSecret)
    {
        string strAuthorizationToken = string.Empty;
        HttpClient client = new HttpClient();

        var dictParams = new Dictionary<string, string>()
        {
            { "clientId", ClientId }, {"clientSecret", ClientSecret }
        };
        var content = new FormUrlEncodedContent(dictParams);

        var response = await client.PostAsync("https://auth.exacttargetapis.com/v1/requestToken", content);
        if (response.IsSuccessStatusCode)
        {
            var strresponse = await response.Content.ReadAsStringAsync();
            //dynamic objResult = JsonConvert.DeserializeObject<dynamic>(strresponse);
            //strAuthorizationToken = objResult.accessToken;
        }

        return strAuthorizationToken;
    }

GetAuthorizationToken("*********", "*******").GetAwaiter().GetResult();

这是我从 API 得到的错误:

{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  X-Mashery-Responder: 02-26
  Vary: Origin
  X-Mashery-Message-ID: f4cec199-2e7e-49e2-88e0-6673ffe849ed
  strict-transport-security: max-age=15552000; preload
  Content-Security-Policy: upgrade-insecure-requests
  x-xss-protection: 1; mode=block
  x-frame-options: DENY
  x-content-type-options: nosniff
  Referrer-Policy: strict-origin-when-cross-origin
  Connection: close
  Cache-Control: no-store, must-revalidate, no-cache, max-age=0, private
  Date: Tue, 26 Feb 2019 16:42:29 GMT
  Server: Apache
  Content-Length: 223
  Content-Type: application/json; charset=UTF-8
}}

我需要知道此代码中发生了哪些更改或需要修复哪些内容才能再次访问 API。请帮助我如何再次完成这项工作。 提前致谢。

【问题讨论】:

  • 那么自首次实施以来,您的代码没有任何变化?他们是否可能停止支持您的应用正在使用的 TLS 版本,比如他们需要 TLS 1.2 而您的应用仅支持 TLS 1.0 和 1.1?
  • 寻找 salesforce API 的变化,看起来他们正在改变其余的 API help.salesforce.com/…
  • 从一开始就没有任何代码更改。这是对营销云授权 URL 的简单 Web HTTP 请求。当我将 clientId 和 secret 作为 Json 传递时,它在邮递员工具中工作。所以我更新了代码以传递 Json 内容。 var content = new StringContent(strContent, Encoding.UTF8, "application/json"); 执行代码还是失败。
  • 我肯定会检查他们是否进行了恶意更新以要求 TLS 1.2 并且您的应用程序不支持它,而邮递员可能被配置为支持它。
  • @DavidYenglin 谢谢大卫。这有帮助。

标签: c# https dotnet-httpclient exacttarget salesforce-marketing-cloud


【解决方案1】:

我正在发布答案,因为它已解决,可能对发送 http 请求有类似问题的其他人有所帮助。

我必须添加以下代码行来指定要使用的安全协议:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-04
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2018-06-17
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多