Google analytics 谷歌分析访问令牌-TLS 1.1+;

Google analytics 谷歌分析访问令牌-TLS 1.1+;,google-analytics,access-token,tls1.2,Google Analytics,Access Token,Tls1.2,我正在使用C#向谷歌请求访问令牌: string serviceAccountEmail = ConfigurationManager.AppSettings["analyticsServiceAccountEmail"].ToString(); string securityKey = ConfigurationManager.AppSettings["analyticsSecurityKeyLocation"].ToString(); string password

我正在使用C#向谷歌请求访问令牌:

string serviceAccountEmail = ConfigurationManager.AppSettings["analyticsServiceAccountEmail"].ToString();
      string securityKey = ConfigurationManager.AppSettings["analyticsSecurityKeyLocation"].ToString();
      string password = ConfigurationManager.AppSettings["analyticsSecurityPassword"].ToString();

      var certificate = new X509Certificate2(securityKey, password, X509KeyStorageFlags.Exportable);

      var scopes = new List<string> { "https://www.googleapis.com/auth/analytics.readonly", "https://www.googleapis.com/auth/analytics" };

      ServiceAccountCredential credential = new ServiceAccountCredential(
         new ServiceAccountCredential.Initializer(serviceAccountEmail)
         {
           Scopes = scopes
         }.FromCertificate(certificate));

      Task<bool> task = credential.RequestAccessTokenAsync(CancellationToken.None);

      task.Wait();

      if (!task.Result || credential.Token == null || string.IsNullOrEmpty(credential.Token.AccessToken))
      {
        throw new Exception("Failed to get token from Google");
      }

      return credential.Token.AccessToken;
string serviceAccountEmail=ConfigurationManager.AppSettings[“analyticsServiceAccountEmail”].ToString();
string securityKey=ConfigurationManager.AppSettings[“analyticsSecurityKeyLocation”]。ToString();
字符串密码=ConfigurationManager.AppSettings[“analyticsSecurityPassword”].ToString();
var证书=新的X509Certificate2(securityKey、密码、X509KeyStrageFlags.Exportable);
var scopes=新列表{”https://www.googleapis.com/auth/analytics.readonly", "https://www.googleapis.com/auth/analytics" };
ServiceAccountCredential credential=新ServiceAccountCredential(
新ServiceAccountCredential.初始值设定项(serviceAccountEmail)
{
范围=范围
}.FromCertificate(证书));
Task Task=credential.RequestAccessTokenAsync(CancellationToken.None);
task.Wait();
如果(!task.Result | | credential.Token==null | | string.IsNullOrEmpty(credential.Token.AccessToken))
{
抛出新异常(“未能从Google获取令牌”);
}
返回credential.Token.AccessToken;
我不得不禁用TLS1.0以符合PCI标准。由于我已经这样做了,此代码将出现以下错误:

发生了一个或多个错误。示例:发送数据时出错 请求:基础连接已关闭:出现意外错误 在接收时发生。客户端和服务器无法通信, 因为它们没有通用的算法


关于如何使用TLS 1.1+拨打电话的任何建议?

必须在应用程序中通过Global.asax启动:

在进行更改之前,请阅读以下内容:

方法是:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12

这将打开SSL3的通信支持,并在适用时返回到TLS 1.1或TLS 1.2。

查看此项。它在这方面有很好的信息。SSL 3.0的安全性不是比TLS 1.1低吗?无论如何,我只想要TLS1.1+。当我这么做的时候,对谷歌分析的调用就失败了。它只有在启用TLS1.0时才起作用。