API de Google Analytics V3.0: uso de OAuth 2.0 con la contraseña de inicio de sesión dada en el código del programa
-
29-10-2019 - |
Pregunta
Estoy intentando utilizar las últimas bibliotecas de cliente .NET para acceder a la versión 3.0 de la API de Google Analytics (API de informes centrales). Registré mi aplicación en la consola de API de Google y utilicé OAuth 2.0 para acceder a la API.
Dado que todavía no hay ejemplos de cómo utilizar la API de Google Analytics, Usé una muestra que demuestra el caso de uso más simple para un servicio OAuth2 y apliqué ese esquema a mi contexto, con éxito.
(Observación: también encontré ayuda para corregir los errores en el código fuente de la biblioteca Google.Apis.Analytics.v3.dll)
Si utilizo mi programa, debo iniciar sesión en Google, otorgar permisos a mi aplicación y copiar un código de autorización.
Me gustaría omitir este flujo escribiendo mi contraseña de inicio de sesión en el código del programa (- en texto sin cifrar). Mi problema es que no puedo encontrar esta función en las bibliotecas. En la versión 2.3 de Google Analyitcs, funcionó con las líneas simples de C #:
AnalyticsService asv = new AnalyticsService("");
asv.setUserCredentials(CLIENT_USERNAME, CLIENT_PASS);
¿Alguien puede ayudarme?
Solución
Poner un nombre de usuario y una contraseña es un problema de seguridad.Google agregó acceso sin conexión solo para este propósito.
Utilice un token de actualización.Puede almacenarlo y usarlo para acceder a sus datos analíticos sin tener que iniciar sesión cada vez que es esencialmente lo que está haciendo con el nombre de usuario y la contraseña que describió.
Las instrucciones de acceso sin conexión se pueden encontrar aquí:
http://code.google.com/apis/accounts/docs / OAuth2WebServer.html # offline
Otros consejos
Bueno, esta es una pregunta antigua.Pero aquí hay un ejemplo de código de cómo hacerlo funcionar.
PM> install-package google.apis -pre
PM> install-package google.apis.analytics.v3 -pre
Descargue el archivo json secreto del cliente desde la consola de Apis y agréguelo a su proyecto con el nombre client_secret.Json.Es posible que deba cambiar las propiedades para crear contenido de acción y copiarlo en la salida si es más nuevo.
// Autentication
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;
}
// crea el servicio
AnalyticsService service = new AnalyticsService(new BaseClientService.Initializer() {
HttpClientInitializer = credential,
ApplicationName = "Analytics API sample",
});