Il nécessite un peu de configuration sur le côté de google, mais il est en fait assez simple. Je vais étape par étape.
D'abord, vous aurez besoin de créer une application dans le Google cloud console et activer l'analyse de l'API.
- Aller à http://code.google.com/apis/console
- Sélectionnez la liste déroulante, et de créer un projet si vous ne possédez pas déjà un
- Une fois le projet créé, cliquez sur services
- À partir d'ici de permettre à l'Analytics API
Maintenant que l'analyse de l'API est activé, la prochaine étape sera de permettre à un compte de service pour l'accès de votre choix profils google analytics/sites. Le compte de service vous permet de vous connecter sans avoir à inviter un utilisateur à des informations d'identification.
- Aller à http://code.google.com/apis/console et choisissez le projet que vous
créé à partir de la liste déroulante.
- Ensuite, allez dans "API Access" et cliquez sur "Créer un autre client id" bouton.
- Dans la création de l'IDENTIFIANT Client windows choisir le compte de service et cliquez sur
créer un identifiant client.
- Télécharger la clé publique de ce compte s'il ne démarre pas le
télécharger automatiquement.Vous en aurez besoin plus tard, lorsque vous code pour
d'autorisation.
- Avant de sortir de copier les comptes de service' auto généré adresse email car vous en aurez besoin à l'étape suivante. Le client e-mail ressemble à @developer.gserviceaccount.com
Maintenant que nous avons un compte de service que vous aurez besoin pour permettre à ce service compte pour accéder à vos profils de vos sites dans Google Analytics.
- Connectez-vous à Google Analytics.
- Une fois connecté, cliquez sur l'Admin bouton dans le coin supérieur droit sur la
de l'écran.
- Dans l'Admin, cliquez sur le compte du menu déroulant et sélectionnez le compte/site que vous souhaitez que votre compte de service pour être en mesure d'accéder, puis cliquez sur "Gestion des Utilisateurs" dans la section compte.
- Saisissez l'adresse email qui a été généré pour votre compte de service et de lui donner la lecture et l'analyse de l'autorisation.
- Répétez ces étapes pour tous les autres compte/de site que vous voulez à votre service pour avoir accès à l'.
Maintenant que la configuration est faite pour le compte de service pour accéder à Google Analytics via l'API, nous pouvons commencer à coder.
Obtenir ce package de NuGet:
Google.Les api.Google Analytics.v3 de la Bibliothèque du Client
Ajouter de l'usage:
using Google.Apis.Analytics.v3;
using Google.Apis.Analytics.v3.Data;
using Google.Apis.Services;
using System.Security.Cryptography.X509Certificates;
using Google.Apis.Auth.OAuth2;
using System.Collections.Generic;
using System.Linq;
Quelques choses à noter.
- L'
keyPath
est le chemin d'accès est la clé du fichier que vous avez téléchargé avec un .p12 fichier de l'extension.
- L'
accountEmailAddress
est l'api email que nous avons reçu plus tôt.
- La portée est un Enum dans l'
Google.Apis.Analytics.v3.AnalyticService
classe qui dicte l'url à utiliser pour autoriser (ex: AnalyticsService.Scope.AnalyticsReadonly
).
- Nom de l'Application est un nom de votre choix qui raconte l'api google ce qui est d'y accéder (aka: il peut être ce que jamais vous choisissez).
Ensuite le code pour faire quelques appels de base est la suivante.
public class GoogleAnalyticsAPI
{
public AnalyticsService Service { get; set; }
public GoogleAnalyticsAPI(string keyPath, string accountEmailAddress)
{
var certificate = new X509Certificate2(keyPath, "notasecret", X509KeyStorageFlags.Exportable);
var credentials = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(accountEmailAddress)
{
Scopes = new[] { AnalyticsService.Scope.AnalyticsReadonly }
}.FromCertificate(certificate));
Service = new AnalyticsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credentials,
ApplicationName = "WorthlessVariable"
});
}
public AnalyticDataPoint GetAnalyticsData(string profileId, string[] dimensions, string[] metrics, DateTime startDate, DateTime endDate)
{
AnalyticDataPoint data = new AnalyticDataPoint();
if (!profileId.Contains("ga:"))
profileId = string.Format("ga:{0}", profileId);
//Make initial call to service.
//Then check if a next link exists in the response,
//if so parse and call again using start index param.
GaData response = null;
do
{
int startIndex = 1;
if (response != null && !string.IsNullOrEmpty(response.NextLink))
{
Uri uri = new Uri(response.NextLink);
var paramerters = uri.Query.Split('&');
string s = paramerters.First(i => i.Contains("start-index")).Split('=')[1];
startIndex = int.Parse(s);
}
var request = BuildAnalyticRequest(profileId, dimensions, metrics, startDate, endDate, startIndex);
response = request.Execute();
data.ColumnHeaders = response.ColumnHeaders;
data.Rows.AddRange(response.Rows);
} while (!string.IsNullOrEmpty(response.NextLink));
return data;
}
private DataResource.GaResource.GetRequest BuildAnalyticRequest(string profileId, string[] dimensions, string[] metrics,
DateTime startDate, DateTime endDate, int startIndex)
{
DataResource.GaResource.GetRequest request = Service.Data.Ga.Get(profileId, startDate.ToString("yyyy-MM-dd"),
endDate.ToString("yyyy-MM-dd"), string.Join(",", metrics));
request.Dimensions = string.Join(",", dimensions);
request.StartIndex = startIndex;
return request;
}
public IList<Profile> GetAvailableProfiles()
{
var response = Service.Management.Profiles.List("~all", "~all").Execute();
return response.Items;
}
public class AnalyticDataPoint
{
public AnalyticDataPoint()
{
Rows = new List<IList<string>>();
}
public IList<GaData.ColumnHeadersData> ColumnHeaders { get; set; }
public List<IList<string>> Rows { get; set; }
}
}
D'autres Liens qui vous seront utiles:
Analytique de l'Explorateur de l'API - API de Requêtes à Partir Du Web
Analytique de l'API Explorer version 2 - Requête API Du Web
Les Dimensions et les mesures de Référence
Espérons que cela aide quelqu'un à essayer de le faire dans l'avenir.