webentwicklung-frage-antwort-db.com.de

Analytics Reporting API V4-Clientbibliothek für .NET

Ich versuche, Daten aus unserer Google Analytics-Instanz abzurufen, und möchte die Analytics Reporting API V4-Clientbibliothek für .NET ( https://developers.google.com/api-client-library) verwenden/dotnet/apis/analyticsreporting/v4 ), damit ich einige dieser Daten auf einer von uns erstellten Verwaltungssite speichern kann. Ich habe Probleme, Beispiele für die Verwendung dieses Codes zu finden, und die Dokumentation scheint unglaublich spärlich zu sein. Ich möchte ein Dienstkonto zum Autorisieren verwenden, da wir nur Daten anzeigen müssen, die mit dem von uns kontrollierten Analysekonto verknüpft sind.

Wenn jemand einen Beispielcode bereitstellen oder mich in die richtige Richtung weisen könnte, um einige grundlegende Berichtsdaten mithilfe der .net-API zu erhalten, wäre er sehr dankbar

34
Ben

Das Aufrufen der Google Analytics-Berichts-API über C # ist nicht besonders schwierig. In der Dokumentation zur Google Analytics-API scheinen jedoch nicht alle erforderlichen Schritte klar umrissen zu sein. Ich werde versuchen, sie alle hier aufzulisten. Während YMMV glaube ich, dass diese Schritte ab dem 20.07.2016 korrekt sind.

Sie können beginnen, indem Sie ein neues C # -Projekt erstellen. Wir erstellen eine Konsolenanwendung zum Testen mit dem Namen GoogleAnalyticsApiConsole. Sobald das Projekt erstellt ist, fügen wir einen Verweis auf Google Analytics Reporting API V4-Clientbibliothek für .NET mithilfe der NuGet Package Manager-Konsole hinzu (in Visual Studio 2015 im Menü Extras). Starten Sie die Konsole und geben Sie den folgenden Befehl an der Eingabeaufforderung PM> Ein:

PM> Install-Package Google.Apis.AnalyticsReporting.v4

Durch die Installation dieses Pakets werden die Client-Bibliotheken heruntergeladen, die zum Aufrufen der Google Analytics Reporting-Webdienste erforderlich sind, sowie eine Reihe anderer Abhängigkeiten.

Um die Webdienste aufzurufen, müssen Sie OAuth 2.0-Zugriff für Ihre Anwendung einrichten. Die Dokumentation für dieses Setup finden Sie hier , aber ich wird unten zusammenfassen:

  1. Melden Sie sich bei der Google Cloud Platform Console: https://console.cloud.google.com/ an. Stellen Sie sicher, dass Sie sich mit einem Konto anmelden, das Zugriff auf die Google Analytics-Konten hat, die Sie mit der Berichts-API abfragen möchten.

  2. Klicken Sie auf das Menü Google Cloud Platform und wählen Sie API Manager.

Google Cloud Platform API Manager

  1. Klicken Sie auf der linken Seite auf Credentials und erstellen Sie dann ein neues Projekt mit dem Namen Google Analytics API Console. Nehmen Sie sich etwas Zeit, um das neue Projekt zu erstellen.

  2. Nachdem das Projekt erstellt wurde, klicken Sie erneut auf Anmeldeinformationen, falls es noch nicht ausgewählt ist, und klicken Sie dann auf den Link OAuth-Einverständnis im rechten Bereich. Setzen Sie den Benutzern angezeigten Produktnamen auf Google Analytics API Console Und klicken Sie dann auf Speichern.

  3. Klicken Sie erneut auf Credentials und dann auf Create Credentials und wählen Sie OAuth Client ID. Wählen Sie Other für Application type und geben Sie dann Google Analytics API Console Als Name ein und klicken Sie auf Erstellen.

  4. Nachdem der Berechtigungsnachweis erstellt wurde, werden Ihnen eine Kunden-ID und ein Kundengeheimnis angezeigt. Sie können das Dialogfenster schließen.

  5. Nun sollten Sie unter Credentials einen Eintrag unter OAuth 2.0-Client-IDs sehen. Klicken Sie auf das Download-Symbol ganz rechts neben diesem Eintrag, um die Datei client_secret.json Herunterzuladen (diese Datei hat einen viel längeren Namen). Fügen Sie diese Datei nach dem Herunterladen im Stammverzeichnis zu Ihrem Projekt hinzu und benennen Sie sie in client_secret.json Um.

Google Cloud Platform API Credentials

  1. Nachdem der Berechtigungsnachweis OAuth 2.0 erstellt wurde, muss er zum Aufrufen der Berichts-API aktiviert werden. Wählen Sie Übersicht und stellen Sie sicher, dass Google-APIs ist im rechten Bereich ausgewählt. Geben Sie Reporting in das Suchfeld ein und wählen Sie Analytics Reporting API V4 aus der Liste aus. Klicken Sie im nächsten Bildschirm auf Aktivieren. Sobald diese API aktiviert wurde, sollte sie in der Liste Aktivierte APIs im rechten Bereich angezeigt werden.

Google Cloud Platform Enabled Analytics Reporting

Nachdem wir unser Projekt erstellt und unseren OAuth= 2.0-Berechtigungsnachweis erstellt haben, ist es an der Zeit, die Berichts-API V4 aufzurufen. Der unten aufgeführte Code verwendet die Google-API und den client_secret.json Datei zum Erstellen eines Google.Apis.Auth.OAuth2.UserCredential, um die Reporting-API für alle Sitzungen zwischen dem angegebenen Datumsbereich für eine Ansicht abzufragen.Der Code wird aus dem Java-Beispiel hier angepasst.

Bevor Sie den Code ausführen, stellen Sie sicher, dass Build Action in der Datei client_secret.json Auf Content eingestellt ist und die Einstellung Copy to Output Directory Copy if newer. Es gibt auch zwei Variablen, die richtig eingestellt werden müssen. Setzen Sie zuerst in der GetCredential() -Methode den loginEmailAddress -Wert auf die E-Mail-Adresse, die zum Erstellen des OAuth= 2.0-Berechtigungsnachweises verwendet wurde. Dann in der Main Stellen Sie sicher, dass ViewId in der Variablen reportRequest auf die Ansicht eingestellt ist, die Sie mithilfe der Berichts-API abfragen möchten. Um ViewId zu finden, melden Sie sich bei Google Analytics an und wählen Sie die Registerkarte Admin. Wählen Sie dort in der Dropdown-Liste Ansicht ganz rechts die Ansicht aus, die Sie abfragen möchten, und wählen Sie Ansichtseinstellungen. Die ID anzeigen wird unter Grundeinstellungen angezeigt.

Bei der ersten Ausführung des Codes wird eine Webseite aufgerufen, auf der Sie gefragt werden, ob Sie dem Google Analytics API Console Zugriff auf die API-Daten gewähren möchten. Wählen Sie Zulassen, um fortzufahren. Von da an wird diese Erlaubnis in GoogleAnalyticsApiConsoleFileDataStore gespeichert. Wenn diese Datei gelöscht wird, muss die Berechtigung erneut erteilt werden. Diese Datei befindet sich im Verzeichnis %APPDATA%\GoogleAnalyicsApiConsole.

Google API Permission OAuth 2.0

Bitte beachten Sie, dass ich glaube, dass dieses Szenario die Anforderungen des OP erfüllen wird. Wenn diese Anwendung an Clients verteilt werden soll, ist höchstwahrscheinlich ein anderes OAuth 2.0-Schema erforderlich.

Hier ist der Code:

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"));
            }
        }
    }
}
62
rsbarro

Ich hatte die gleiche Erfahrung: Die Dokumentation von Google ist ziemlich ausführlich, aber es ist ziemlich schrecklich, klare Beispiele für die Verbindung mit .NET zu geben.

Eine wichtige Sache, die mir schließlich klar wurde, ist, dass Sie entweder eine Verbindung mit einem OAuth2-Berechtigungsnachweis oder einem Dienstkonto-Berechtigungsnachweis herstellen können. Wenn Sie Ihr Analytics-Konto besitzen, verwenden Sie ein Dienstkonto. Wenn Sie eine Verbindung zu den Analytics-Konten anderer Benutzer herstellen müssen, verwenden Sie OAuth2.

Es scheint einige Beispiele online zu geben, wie Analytics-API-Daten mithilfe eines OAuth2-Berechtigungsnachweises abgerufen werden können, aber ich besitze mein Analytics-Konto und wollte nur Daten daraus abrufen. Ich fand heraus, wie man mit einem ServiceAccountCredential eine Verbindung zur Analytics Reporting API v4 herstellt, und schrieb eine Antwort auf eine ähnliche Stapelüberlauf-Frage mit allen Details.

5
John Washam