I am trying to authenticate to my Google analytics account using a the service account p12 file. The code below should be authenticating to my analytics account and requesting the data that I need however I am getting an error with the X509Certificate2 when I run the code below. I have put my p12 file in bin/debug folder of my project with given credentials.
var certificate = new X509Certificate2(keyFilePath, keyPassword, X509KeyStorageFlags.Exportable);
I am getting the following Error:
An unhandled exception of type 'System.Security.Cryptography.CryptographicException' occurred in mscorlib.dll
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Google.Apis.Analytics.v3;
using System.Security.Cryptography.X509Certificates;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
namespace GoogleAnalytics
{
public partial class MainForm : Form
{
private string keyFilePath = @"CSharpApplication-9f9f7643f6.p12";
private string serviceAccountEmail = "56849870-9pqlki56dvp3bn64nais8ndes@developer.gserviceaccount.com";
private string keyPassword = "notasecret";
private string websiteCode = "67881935";
private AnalyticsService service = null;
private List<ChartRecord> visitsData = new List<ChartRecord>();
public MainForm()
{
InitializeComponent();
}
private void Authenticate()
{
//loading the Key file
var certificate = new X509Certificate2(keyFilePath, keyPassword, X509KeyStorageFlags.Exportable);
var scopes =
new string[] {
AnalyticsService.Scope.Analytics, // view and manage your analytics data
AnalyticsService.Scope.AnalyticsEdit, // edit management actives
AnalyticsService.Scope.AnalyticsManageUsers, // manage users
AnalyticsService.Scope.AnalyticsReadonly}; // View analytics data
var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = scopes
}.FromCertificate(certificate));
service = new AnalyticsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential
});
}
private void QueryData()
{
DataResource.GaResource.GetRequest request = service.Data.Ga.Get(
"ga:" + websiteCode,
DateTime.Today.AddDays(-15).ToString("yyyy-MM-dd"),
DateTime.Today.ToString("yyyy-MM-dd"),
"ga:sessions");
request.Dimensions = "ga:year,ga:month,ga:day";
var data = request.Execute();
foreach (var row in data.Rows)
{
visitsData.Add(new ChartRecord(new DateTime(int.Parse(row[0]), int.Parse(row[1]), int.Parse(row[2])).ToString("MM-dd-yyyy"), int.Parse(row[3])));
}
}
private void PopulateChart()
{
analyticsChart.Series[0].XValueMember = "Date";
analyticsChart.Series[0].YValueMembers = "Visits";
analyticsChart.DataSource = visitsData;
analyticsChart.DataBind();
}
private void btnData_Click(object sender, EventArgs e)
{
Authenticate();
QueryData();
PopulateChart();
}
}
}
UPDATE: With below answered code i get errors like
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll'.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'c:\users\star\documents\visual studio 2015\Projects\GoogleAnalytics2\GoogleAnalytics2\bin\Release\GoogleAnalytics2.vshost.exe'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Net.Http\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Net.Http.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll'. Cannot find or open the PDB file.
The thread 0x3714 has exited with code 0 (0x0).
The thread 0x398c has exited with code 0 (0x0).
The thread 0x289c has exited with code 0 (0x0).
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'c:\users\star\documents\visual studio 2015\Projects\GoogleAnalytics2\GoogleAnalytics2\bin\Release\GoogleAnalytics2.exe'. Symbols loaded.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'c:\users\star\documents\visual studio 2015\Projects\GoogleAnalytics2\GoogleAnalytics2\bin\Release\Google.Apis.AnalyticsReporting.v4.dll'. Symbols loaded.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'c:\users\star\documents\visual studio 2015\Projects\GoogleAnalytics2\GoogleAnalytics2\bin\Release\Google.Apis.dll'. Symbols loaded.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'c:\users\star\documents\visual studio 2015\Projects\GoogleAnalytics2\GoogleAnalytics2\bin\Release\Google.Apis.Core.dll'. Symbols loaded.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'c:\users\star\documents\visual studio 2015\Projects\GoogleAnalytics2\GoogleAnalytics2\bin\Release\Google.Apis.Auth.PlatformServices.dll'. Symbols loaded.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'c:\users\star\documents\visual studio 2015\Projects\GoogleAnalytics2\GoogleAnalytics2\bin\Release\Google.Apis.Auth.dll'. Symbols loaded.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'. Cannot find or open the PDB file.
'GoogleAnalytics2.vshost.exe' (CLR v4.0.30319: GoogleAnalytics2.vshost.exe): Loaded 'c:\users\star\documents\visual studio 2015\Projects\GoogleAnalytics2\GoogleAnalytics2\bin\Release\Newtonsoft.Json.dll'. Cannot find or open the PDB file.
The thread 0x1228 has exited with code 0 (0x0).
The thread 0x30cc has exited with code 0 (0x0).
The program '[10788] GoogleAnalytics2.vshost.exe' has exited with code 0 (0x0).
The program '[10788] GoogleAnalytics2.vshost.exe: Program Trace' has exited with code 0 (0x0).
where my program.cs file is
namespace GoogleAnalytics2
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(ServiceAccountAuthExample.AuthenticateServiceAccount("analyticsdemo@ultimate-triode-151909.iam.gserviceaccount.com", "C:/Users/star/Downloads/CSharpApplication-9f9f557643f6.p12"));
}
}
}
Plese help on this.What i am missing here. Any help is appreciated.