与.NET API中的Google API通信时的X509证书?

时间:2014-07-09 14:01:18

标签: google-api google-api-dotnet-client x509certificate2

我花了一些时间在C#中编写控制台应用程序,并与Google AnalyticsAPI进行通信。

当我将代码作为独立的控制台应用程序执行时,一切正常。但是,只要我尝试将代码集成到SharePoint(或其他IIS托管的软件)中作为ASP.NET类型的解决方案,它就无法正常工作,并且在加载证书时会不断失败。 / p>

  • 我们使用SSL吗?
  • 我们会使用SSL吗? 不是在不久的将来,没有。
  • 使用以下代码的控制台应用程序是否有效?的
  • 完全相同的代码是否适用于我们的网络表单?
  • 我们是否尝试将证书文件(.p12)加载为byte []数组?的

以下是我使用的代码:

        var serviceAccountEmail = "xxxx@developer.gserviceaccount.com";
        var certificate = new X509Certificate2(@"CertFile-privatekey.p12", "password", X509KeyStorageFlags.Exportable);
        var credential = new ServiceAccountCredential(
        new ServiceAccountCredential.Initializer(serviceAccountEmail)
        {
            Scopes = new[] { AnalyticsService.Scope.Analytics }
        }.FromCertificate(certificate));

        var gas = new AnalyticsService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "GATest",
        });

        var r = gas.Data.Ga.Get("ga:xxxxxx", "2014-01-01", "2014-02-01", "ga:pageviews");

        //Specify some addition query parameters
        r.Dimensions = "ga:source";
        r.Filters = "ga:pagePath=~/business/,ga:medium==referral";
        r.Segment = "gaid::-1";
        r.Sort = "-ga:pageviews";
        r.MaxResults = 50;

        //Execute and fetch the results of our query
        Google.Apis.Analytics.v3.Data.GaData d = r.Execute();

其余的逻辑并不是一个至关重要的部分,因为它只处理渲染。

集成(IIS托管)应用程序中断的行是这一行:

var certificate = new X509Certificate2(@"CertFile-privatekey.p12", "password", X509KeyStorageFlags.Exportable);

我想这些问题总结如下:

  • 我们是否可以通过指定验证而不 p12文件 密钥/密码直接到方法?
  • 是否还有其他身份验证选项,或者这是SSL问题吗?

对于实际的错误消息,Visual Studio只是崩溃并且说抛出了异常。这发生在X509Certificate2-line上。

谢谢: - )

0 个答案:

没有答案