Google c# Api, mudando de v2.3 para v3
-
26-12-2019 - |
Pergunta
Eu tenho o seguinte código para consultar o Google Analytics usando a API C# v2.3:
string username = "SAMPLE@SAMPLE.COM";
string pass = "PASS";
string gkey = "?key=XXXXXXXXXXXXXXXXXXXXXXXXXXX";
string dataFeedUrl = "https://www.google.com/analytics/feeds/data" + gkey;
AnalyticsService service = new AnalyticsService("API Sample");
service.setUserCredentials(username, pass);
DataQuery query1 = new DataQuery(dataFeedUrl);
query1.Ids = "ga:34197921";
query1.Dimensions = "ga:medium,ga:campaign,ga:date,ga:isMobile,ga:isTablet,ga:searchKeyword,ga:hostname";
query1.Metrics = "ga:visits,ga:visitors,ga:visitBounceRate,ga:goalStartsAll,ga:goalCompletionsAll,ga:goal1Starts,ga:goal1Completions,ga:goal2Starts,ga:goal2Completions,ga:goal3Starts,ga:goal3Completions,ga:goal4Starts,ga:goal4Completions,ga:adCost,ga:totalValue";
query1.Sort = "ga:date,ga:hour";
query1.NumberToRetrieve = 50;
query1.GAStartDate = new DateTime(2012, 1, 2).ToString("yyyy-MM-dd");
query1.GAEndDate = DateTime.Now.ToString("yyyy-MM-dd");
query1.StartIndex = 1;
DataFeed dataFeedVisits = service.Query(query1);
foreach (DataEntry entry in dataFeedVisits.Entries)
{
....
}
Gostaria de atualizar a API v3 mais recente, mas acho difícil ver exemplos simples on-line em que alguém se autentica usando o Google oAuth e depois consulta os dados do Google Analytics.
Eu instalo o seguinte pacote NuGet:Install -package google.apis.analytics.v3 -pre Em uma nova solução C#, ela me fornece as seguintes referências adicionais:
- Google.Apis
- Google.Apis.Analytics.v3
- Google.Apis.Auth
- Google.Apis.Auth.PlatformServices
- Google.Apis.PlatformServices
- log4net
- Newtownsoft.Json
- Zlib.Portátil
Eu vi este artigo, que parece executar um código semelhante ao que preciso executar:Como enviar consulta de relatório analítico do Google usando ASP.net API analítica do Google versão 3 (Google.Apis.Analytics.v3.dll)?
No entanto, nenhum código neste artigo resolve o uso das bibliotecas do Google que foram referenciadas no NuGet.
O que estou perdendo e como posso completar o quadro.Como faço para autenticar e executar minha consulta no Google Analytics.
Não gostei do Google por não ter um tutorial on-line fácil de seguir para oferecer suporte à sua biblioteca .net!
Agradecemos antecipadamente por qualquer conselho!
Solução
Acessar o Google Analtyics com a biblioteca cliente v3 é muito bom.A única coisa que não descobri é como enviar um token de atualização que armazenei no banco de dados.Estou preso com aquele que ele armazena para mim no PC.
Solicitar autenticação:Todo o material secreto do cliente é armazenado em client_secret.json. Você pode baixar o arquivo do google apis consol.Irá aparecer uma janela do navegador se não tiver aprovação, se tiver, simplesmente continuará.
private void Form1_Load(object sender, EventArgs e)
{
UserCredential credential;
using (var stream = new System.IO.FileStream("client_secret.json", System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { AnalyticsService.Scope.AnalyticsReadonly },
"user", CancellationToken.None, new FileDataStore("Analytics.Auth.Store")).Result;
}
}
Agora para acessar o Google Analytics você precisa fazer um serviço analítico.
AnalyticsService service = new AnalyticsService(new BaseClientService.Initializer() {
HttpClientInitializer = credential,
ApplicationName = "Analytics API sample",
});
Todas as suas chamadas agora serão executadas contra isso.
O seu deve acabar sendo algo como:
DataResource.GaResource.GetRequest request = service.Data.Ga.Get(ga:34197921, new DateTime(2012, 1, 2).ToString("yyyy-MM-dd"), DateTime.Now.ToString("yyyy-MM-dd"), ""ga:visits,ga:visitors,ga:visitBounceRate,ga:goalStartsAll,ga:goalCompletionsAll,ga:goal1Starts,ga:goal1Completions,ga:goal2Starts,ga:goal2Completions,ga:goal3Starts,ga:goal3Completions,ga:goal4Starts,ga:goal4Completions,ga:adCost,ga:totalValue");
request.Dimensions = "ga:medium,ga:campaign,ga:date,ga:isMobile,ga:isTablet,ga:searchKeyword,ga:hostname";
Eu tenho uma postagem no blog que aborda a maioria das diferentes chamadas que você pode fazer. http://daimto.com/google-analytics-api-v3-with-c/
Outras dicas
Eu estava tendo o mesmo problema.Eu instalei os pacotes nuget, mas recebi o mesmo erro "Não foi possível carregar o arquivo ou assembly 'Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.16.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou uma de suas dependências .O sistema não consegue encontrar o arquivo especificado." Tentei remover e reinstalar os pacotes nuget sem sucesso.Então, acabei procurando o arquivo Microsoft.Threading.Tasks.Extensions.Desktop.dll e ele foi encontrado na pasta net40.Copiei para minha pasta bin e funcionou.