Analytics Reporting API V4 Client Library for.NET
Próbuję pobrać dane z naszej instancji google analytics i chciałbym skorzystać z biblioteki klienta Analytics Reporting API V4 dla. NET ( https://developers.google.com/api-client-library/dotnet/apis/analyticsreporting/v4 ), abym mógł upiec niektóre z tych danych na stronie administracyjnej, którą zbudowaliśmy. Mam problem ze znalezieniem jakichkolwiek przykładów użycia tego kodu, a dokumentacja wydaje się być niewiarygodnie uboga. Chciałbym skorzystać z konta serwisowego, aby autoryzować, ponieważ tylko my konieczność przeglądania danych związanych z kontem analitycznym, które kontrolujemy.
Jeśli ktoś mógłby podać przykładowy kod lub wskazać mi właściwy kierunek, aby uzyskać podstawowe dane raportu za pomocą. NET api, byłoby to bardzo mile widziane
2 answers
Wywołanie Google Analytics Reporting API z C# nie jest szczególnie trudne, jednak wszystkie niezbędne kroki nie wydają się być wyraźnie opisane w dokumentacji Google Analytics API. Postaram się wymienić je wszystkie tutaj. Chociaż YMMV, uważam, że te kroki są poprawne od 7/20/2016.
Możesz zacząć od utworzenia nowego projektu C#. Wykonamy do testowania aplikację konsolową o nazwie GoogleAnalyticsApiConsole
. Po utworzeniu projektu dodamy odniesienie do Google Biblioteka klienta. NET przy użyciu konsoli Menedżera pakietów NuGet (znajduje się w menu Narzędzia w programie Visual Studio 2015). Uruchom konsolę i wydaj następujące polecenie w wierszu polecenia PM>
:
PM> Install-Package Google.Apis.AnalyticsReporting.v4
Instalacja tego pakietu spowoduje pobranie bibliotek klienckich potrzebnych do wywołania usług raportowania Google Analytics wraz z szeregiem innych zależności.
Aby wywołać usługi internetowe, musisz skonfigurować OAuth 2.0 dostęp do Twojej aplikacji. Dokumentacja dla tej konfiguracji Znajduje się tutaj , ale podsumuję poniżej:
Zaloguj się do konsoli Google Cloud Platform: https://console.cloud.google.com / . pamiętaj, aby zalogować się za pomocą konta, które ma dostęp do kont Google Analytics, które próbujesz odpytywać za pomocą interfejsu raportowania API.
Kliknij menu Google Cloud Platform i wybierz API Manager .
Po lewej stronie kliknij poświadczenia, a następnie utwórz nowy projekt o nazwie
Google Analytics API Console
. Daj mu trochę czasu na stworzenie nowego projektu.Po utworzeniu projektu kliknij ponownie poświadczenia , jeśli nie jest jeszcze zaznaczony, a następnie kliknij link OAuth Consent Screen W prawym panelu. Ustaw nazwę produktu pokazaną użytkownikom na
Google Analytics API Console
, a następnie kliknij Zapisz.Kliknij ponownie poświadczenia , a następnie kliknij Utwórz poświadczenia i wybierz OAuth Client ID . Wybierz Inne dla Typ aplikacji, a następnie wprowadź
Google Analytics API Console
jako nazwę i kliknij Utwórz.Po utworzeniu poświadczenia otrzymasz identyfikator klienta i sekret klienta. Możesz zamknąć okno dialogowe.
Teraz Pod powinieneś zobaczyć wpis Pod OAuth 2.0 client ids. Kliknij ikonę pobierania po prawej stronie tego wpisu, Aby pobrać plik
client_secret.json
(ten plik będzie miał znacznie dłuższą nazwę). Dodaj ten plik do projektu na poziomie głównym po jego pobraniu i zmień jego nazwę naclient_secret.json
.
- teraz, gdy został utworzony certyfikat OAuth 2.0, musimy włączyć go do wywoływania raportującego API. Wybierz przegląd i upewnij się Google API {[41] } jest zaznaczone w prawym panelu. Wpisz
Reporting
w polu wyszukiwania i wybierz Analytics Reporting API V4 z listy. Na następnym ekranie kliknij Enable. Po włączeniu tego interfejsu API powinieneś być w stanie zobaczyć go pod listą Enabled API w prawym panelu.
Teraz, gdy stworzyliśmy nasz projekt i stworzyliśmy nasz certyfikat OAuth 2.0, nadszedł czas, aby wywołać raportowanie API V4. Kod wymienione poniżej będą używać Google API i pliku client_secret.json
do tworzenia Google.Apis.Auth.OAuth2.UserCredential
do zapytań API raportowania dla wszystkich sesji między podanym zakresem dat dla widoku. Kod jest zaadaptowany z przykładu Javy tutaj .
Przed wykonaniem kodu należy ustawić Build Action w pliku client_secret.json
na Content oraz Copy to Output Directory na Copy if newer . Istnieją również dwie zmienne, które muszą być prawidłowo gotowi. Najpierw w metodzie GetCredential()
ustaw wartość loginEmailAddress
na adres e-mail użyty do utworzenia poświadczenia OAuth 2.0. Następnie w metodzie Main
upewnij się, że ustawisz ViewId
W Zmiennej reportRequest
na widok, który chcesz odpytywać za pomocą interfejsu API raportowania. Aby znaleźć ViewId
, Zaloguj się do Google Analytics i wybierz zakładkę Admin. Następnie wybierz widok, który chcesz odpytywać w menu rozwijanym View po prawej stronie i wybierz View Settings. Widok id zostaną wyświetlone w ustawieniach podstawowych .
Przy pierwszym uruchomieniu kodu wyświetli się strona internetowa z pytaniem, czy chcesz zezwolić Google Analytics API Console
na dostęp do danych API. Wybierz Zezwól , aby kontynuować. Od tego momentu pozwolenie to będzie przechowywane w GoogleAnalyticsApiConsole
FileDataStore
. Jeśli plik zostanie usunięty, konieczne będzie ponowne przyznanie uprawnień. Plik ten można znaleźć w katalogu %APPDATA%\GoogleAnalyicsApiConsole
.
Proszę pamiętać, że wierzę ten scenariusz będzie odpowiadał potrzebom OP. gdyby ta aplikacja miała być rozpowszechniana wśród klientów, to najprawdopodobniej potrzebny byłby inny schemat OAuth 2.0.
Oto kod:
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"));
}
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-10 15:07:04
Miałem to samo doświadczenie: dokumentacja Google jest dość dogłębna, ale jest dość okropna w podawaniu jasnych przykładów, jak połączyć się z .NET.
Kluczową rzeczą, którą w końcu zrozumiałem, jest to, że możesz połączyć się za pomocą poświadczenia OAuth2 lub poświadczenia konta usługowego. Jeśli posiadasz konto analityczne, użyj konta usługi. Jeśli chcesz połączyć się z kontami analitycznymi innych użytkowników, użyj OAuth2.
Wydaje się być sporo przykładów w Internecie, jak uzyskać Dane API Analytics z wykorzystaniem poświadczeń OAuth2, ale posiadam swoje konto Analytics i chciałem tylko pobrać z niego dane. Wymyśliłem, jak połączyć się z API raportowania analitycznego v4 za pomocą ServiceAccountCredential
, i napisałem ODPOWIEDŹ na podobne pytanie o przepełnienie stosu ze wszystkimi szczegółami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-17 02:46:12