.net - google - no tienes permiso para ver claves de api clientes oauth y claves de cuenta de servicio
¿Cómo usar la API de Google Analytics con OAuth de dos patas(Google Apps for business)? (3)
Quiero desarrollar una aplicación para el negocio en el que trabajo. Estamos usando Google Apps y queremos obtener datos de Google Analytics y mostrarlos en una de nuestras aplicaciones web. No deseo que el cliente vea ninguna solicitud para autorizar la aplicación. Deseo utilizar OAuth de dos patas, como http://www.google.com/support/a/bin/answer.py?hl=es&answer=162105, pero Google Analytics no está en la lista. ¿Todavía podré usarlo? ¿Es compatible con la biblioteca .NET Google Data API o el API API .NET Client ?
EDIT 1 :
Utilizando Google API .NET Client , se me ocurrió algo que debería funcionar para mi sentido:
var auth = new Google.Apis.Authentication.OAuth2LeggedAuthenticator(DOMAIN_CONSUMER_KEY, DOMAIN_CONSUMER_SECRET, USER_TO_IMPERSONATE, DOMAIN);
var service = new Google.Apis.Analytics.v3.AnalyticsService(auth);
service.Key = DEV_KEY_FROM_API_CONSOLE;
var _request = service.Management.Accounts.List();
foreach (var item in _request.Fetch().Items)
{
Console.WriteLine(item.Name);
}
... pero obtengo este error:
Google.Apis.Requests.RequestError
InvalidCredentials [401]
Errors [
Message[Invalid Credentials]
Location[Authorization - header]
Reason[authError]
Domain[global]
]
Gracias
Esta publicación de blog explica paso a paso cómo implementar una autenticación de 2 patas con el cliente .Net API de Google.
http://bittwiddlers.org/?p=212#awp::?p=212
Sin embargo, el autor finaliza su publicación con este comentario:
La información anterior específica para el proyecto google-api-dotnet-client es relevante, pero esa biblioteca pierde memoria como un tamiz y matará su rendimiento si intenta hacer un trabajo asincrónico o usa 2LO (en nombre de múltiples usuarios).
Buena suerte y avíseme si descubrió una solución mejor, estoy un poco harto del problema ...
Encontré un método usando la biblioteca .NET para la API de datos de Google . Encontré este enlace gracias a este tipo . Aquí hay un código de trabajo que enumera todas las cuentas de Analytics, teniendo en cuenta que GOOGLE_APPS_DOMAIN_SECRET es la clave que se genera con este método , DOMAIN es el dominio de Google Apps y el nombre de usuario es el prefijo (por ejemplo: "firstname.lastname") del correo electrónico del usuario de Google Apps que queremos suplantar (el administrador, por ejemplo, para tener acceso a todo):
var requestFactory = new GOAuthRequestFactory("an", "Any app name");
requestFactory.ConsumerKey = DOMAIN;
requestFactory.ConsumerSecret = GOOGLE_APPS_DOMAIN_SECRET;
var service = new AnalyticsService("Any app name");
service.RequestFactory = requestFactory;
var query = new AccountQuery();
query.OAuthRequestorId = username + "@" + DOMAIN;
var serviceQuery = service.Query(query);
foreach (AccountEntry Entry in serviceQuery.Entries)
{
WriteLine(Entry.Title.Text);
}
El único problema es que debo suplantar a un usuario y simplemente no puedo tener acceso a todo.
EDITAR: Método obsoleto
He respondido una pregunta similar aquí . Eso responde a cómo solucionar un par de problemas que causarán 401 Invalid Credentials
y pueden ayudarlo a obtener la versión v3 de las API de .Net funcionando. Solo agrego esto aquí ya que su solución usa la API v2 en desuso para eludir el problema que estaba teniendo con la autenticación.