c# - lista - Analytics Reporting API V4 Client Library para.NET
lista de apis de google (2)
Estoy tratando de obtener algunos datos de nuestra instancia de Google Analytics y me gustaría usar la biblioteca de clientes de Analytics Reporting API V4 para .NET ( https://developers.google.com/api-client-library/dotnet/apis/analyticsreporting/v4 ) para que pueda trasladar algunos de estos datos a un sitio de administración que hemos construido. Tengo problemas para encontrar ejemplos del uso de este código y la documentación parece ser increíblemente escasa. Me gustaría usar una cuenta de servicio para autorizar, ya que solo necesitamos ver los datos asociados con la cuenta de análisis que controlamos.
Si alguien pudiera proporcionar algún código de ejemplo o indicarme la dirección correcta para obtener algunos datos básicos del informe utilizando la api .net, sería muy apreciado.
Llamar a la API de informes de Google Analytics desde C # no es particularmente difícil, sin embargo, no parece que todos los pasos necesarios se describan muy claramente en la documentación de la API de Google Analyics. Intentaré enumerarlos a todos aquí. Mientras YMMV, creo que estos pasos son correctos a partir del 7/20/2016.
Puedes comenzar creando un nuevo proyecto en C #. Haremos una aplicación de consola para probar llamada GoogleAnalyticsApiConsole
. Una vez que se haya creado el proyecto, agregaremos una referencia a la https://developers.google.com/api-client-library/dotnet/apis/analyticsreporting/v4 mediante la consola NuGet Package Manager (que se encuentra en el menú Herramientas en Visual Studio 2015). Encienda la Consola y ejecute el siguiente comando en el indicador de PM>
:
PM> Install-Package Google.Apis.AnalyticsReporting.v4
La instalación de ese paquete descargará las bibliotecas cliente necesarias para llamar a los servicios web de Google Analytics Reporting junto con otras dependencias.
Para llamar a los servicios web, deberá configurar el acceso OAuth 2.0 para su aplicación. La documentación para esta configuración se puede encontrar aquí , pero a continuación resumiré:
Inicie sesión en la consola de Google Cloud Platform : https://console.cloud.google.com/ . Asegúrese de iniciar sesión con una cuenta que tenga acceso a las cuentas de Google Analytics que está intentando consultar con la API de informes.
Haga clic en el menú de Google Cloud Platform y seleccione API Manager .
En el lado izquierdo, haga clic en Credenciales y luego cree un nuevo proyecto llamado
Google Analytics API Console
. Dale algo de tiempo para crear el nuevo proyecto.Después de crear el proyecto, vuelva a hacer clic en Credenciales si aún no está seleccionado, y luego haga clic en el enlace Pantalla de consentimiento de OAuth en el panel derecho. Configure el nombre del producto que se muestra a los usuarios en
Google Analytics API Console
y luego haga clic en Guardar.Vuelva a hacer clic en Credenciales y luego haga clic en Crear credenciales , y elija ID de cliente de OAuth . Seleccione Otro para Tipo de aplicación y luego ingrese
Google Analytics API Console
como Nombre y haga clic en Crear .Después de crear la credencial, se le presentará un ID de cliente y un secreto de cliente. Puede cerrar la ventana de diálogo.
Ahora, en Credenciales , debería ver una entrada bajo los ID de cliente de OAuth 2.0 . Haga clic en el icono de descarga en el extremo derecho de esa entrada para descargar el archivo
client_secret.json
(este archivo tendrá un nombre mucho más largo). Agregue ese archivo a su proyecto en el nivel raíz una vez que se haya descargado y cambie su nombre aclient_secret.json
.
- Ahora que se ha creado la credencial OAuth 2.0, debemos habilitarla para que llame a la API de informes. Seleccione Información general y asegúrese de que las API de Google estén seleccionadas en el panel derecho. Escriba
Reporting
en el cuadro de búsqueda y seleccione Analytics Reporting API V4 en la lista. En la siguiente pantalla, haga clic en Habilitar . Una vez que se haya habilitado esta API, debería poder verla en la lista de API habilitadas en el panel derecho.
Ahora que hemos creado nuestro proyecto y creado nuestra credencial OAuth 2.0, es hora de llamar a Reporting API V4. El código que aparece a continuación utilizará la API de Google y el archivo client_secret.json
para crear un Google.Apis.Auth.OAuth2.UserCredential
para consultar la API de informes para todas las sesiones entre el rango de fechas dado para una vista. El código se adapta del ejemplo de Java aquí .
Antes de ejecutar el código , asegúrese de establecer la Acción de compilación en el archivo client_secret.json
en Contenido y la configuración Copiar en directorio de salida en Copiar si es más reciente . También hay dos variables que deben configurarse correctamente. Primero, en el método GetCredential()
, establezca el valor loginEmailAddress
en la dirección de correo electrónico utilizada para crear la credencial OAuth 2.0. Luego, en el método Main
, asegúrese de establecer el ViewId
en la variable reportRequest
en la vista que desea consultar utilizando la API de informes. Para encontrar ViewId
, inicie sesión en Google Analytics y seleccione la pestaña Admin . Desde allí, seleccione la vista que desea consultar en el menú desplegable Ver en el extremo derecho y seleccione Ver configuración . La ID de la vista se mostrará en Configuración básica .
La primera vez que se ejecute el código, aparecerá una página web que le preguntará si desea permitir que la Google Analytics API Console
tenga acceso a los datos de la API. Seleccione Permitir para continuar. A partir de ese momento, ese permiso se almacenará en GoogleAnalyticsApiConsole
FileDataStore
. Si ese archivo es eliminado, entonces el permiso deberá ser otorgado nuevamente. Ese archivo se puede encontrar en el %APPDATA%/GoogleAnalyicsApiConsole
.
Tenga en cuenta que creo que este escenario satisfará las necesidades del OP. Si esta aplicación se distribuyera a los clientes, lo más probable es que sea necesario un esquema OAuth 2.0 diferente.
Aquí está el código:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Google.Apis.AnalyticsReporting.v4;
using Google.Apis.AnalyticsReporting.v4.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Util.Store;
namespace GoogleAnalyticsApiConsole
{
class Program
{
static void Main(string[] args)
{
try
{
var credential = GetCredential().Result;
using(var svc = new AnalyticsReportingService(
new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = "Google Analytics API Console"
}))
{
var dateRange = new DateRange
{
StartDate = "2016-05-01",
EndDate = "2016-05-31"
};
var sessions = new Metric
{
Expression = "ga:sessions",
Alias = "Sessions"
};
var date = new Dimension { Name = "ga:date" };
var reportRequest = new ReportRequest
{
DateRanges = new List<DateRange> { dateRange },
Dimensions = new List<Dimension> { date },
Metrics = new List<Metric> { sessions },
ViewId = "<<your view id>>"
};
var getReportsRequest = new GetReportsRequest {
ReportRequests = new List<ReportRequest> { reportRequest } };
var batchRequest = svc.Reports.BatchGet(getReportsRequest);
var response = batchRequest.Execute();
foreach (var x in response.Reports.First().Data.Rows)
{
Console.WriteLine(string.Join(", ", x.Dimensions) +
" " + string.Join(", ", x.Metrics.First().Values));
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
static async Task<UserCredential> GetCredential()
{
using (var stream = new FileStream("client_secret.json",
FileMode.Open, FileAccess.Read))
{
const string loginEmailAddress = "<<your account email address>>";
return await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { AnalyticsReportingService.Scope.Analytics },
loginEmailAddress, CancellationToken.None,
new FileDataStore("GoogleAnalyticsApiConsole"));
}
}
}
}
Tuve la misma experiencia: la documentación de Google es bastante profunda pero es bastante terrible al dar ejemplos claros de cómo conectarse con .NET.
Una cosa clave que finalmente me di cuenta es que puede conectarse usando una credencial OAuth2 o una credencial de cuenta de servicio. Si posee su cuenta de Analytics, use una cuenta de servicio. Si necesita conectarse a las cuentas de Analytics de otros usuarios, use OAuth2.
Parece que hay bastantes ejemplos en línea de cómo obtener datos de la API de Analytics con una credencial de OAuth2, pero soy dueño de mi cuenta de Analytics y solo quería extraer datos de ella. Descubrí cómo conectarme a Analytics Reporting API v4 utilizando un ServiceAccountCredential
, y escribí una respuesta en una pregunta similar de Desbordamiento de pila con todos los detalles.