c# - tienes - oauth2 google
Cuenta de servicio Google Analytics OAuth AccessType=Sin conexión C# (4)
Crea tu aplicación https://code.google.com/apis/console/
Para su aplicación, active el acceso a Google Analytics y cree una ID de cliente OAuth 2.0 para su sitio web.
Navegue a:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=YOUR_APP_ID.apps.googleusercontent.com&access_type=offline&scope=https://www.googleapis.com/auth/analytics.readonly&redirect_uri=HTTP://YOUR_CALL_BACK_URL
Haber cambiado YOUR_APP_ID , YOUR_CALL_BACK_URL a los valores relevantes.
Importante para incluir access_type = fuera de línea .
Presione Otorgar acceso, esto redirigirá a HTTP://YOUR_CALL_BACK_URL?code=THIS_IS_YOUR_CODE
. Copie el código en la URL.
Con el código, solicite el token de actualización usando el prompt de CMD.
curl -d "code=THIS_IS_YOUR_CODE&client_id=YOUR_APP_ID.apps.googleusercontent.com&client_secret=YOUR_APPS_SECRET_CODE&redirect_uri=HTTP://YOUR_CALL_BACK_URL&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token
Después de haber cambiado THIS_IS_YOUR_CODE , YOUR_APP_ID , YOUR_APPS_SECRET_CODE , YOUR_CALL_BACK_URL a los valores relevantes.
Registre el refresh_token devuelto.
Descargue la última versión de las bibliotecas .net de Core Reporting V3.0 http://code.google.com/p/google-api-dotnet-client/wiki/Downloads
Hay un error en la versión actual de Google.Apis.Analytics.v3.cs, para corregir esta copia, copie el código de este archivo en su solución local (y no haga referencia a Google.Apis.Analytics.v3.bin) http: //code.google.com/p/google-api-dotnet-client/source/browse/Services/Google.Apis.Analytics.v3.cs?repo=samples&name=20111123-1.1.4344-beta
Y cambie las Dimensiones de la propiedad de una List<system.string>
a una string
.
O obtendrás un error como yo y este tipo lo hizo http://www.evolutiadesign.co.uk/blog/using-the-google-analytics-api-with-c-shar/
A continuación, puede usar su token de actualización para generar un token de acceso sin interacción del usuario y usar el token de acceso para ejecutar un informe en Google Analytics.
using System;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using AnalyticsService = Google.Apis.Analytics.v3.AnalyticsService;
class Program
{
public static void Main()
{
var client = new WebServerClient(GoogleAuthenticationServer.Description, "YOUR_APP_ID.apps.googleusercontent.com", "YOUR_APPS_SECRET_CODE");
var auth = new OAuth2Authenticator<WebServerClient>(client, Authenticate);
var asv = new AnalyticsService(auth);
var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");
request.Dimensions = "ga:pagePath";
request.Sort = "-ga:visitors";
request.MaxResults = 5;
var report = request.Fetch();
Console.ReadLine();
}
private static IAuthorizationState Authenticate(WebServerClient client)
{
IAuthorizationState state = new AuthorizationState(new string[]{}) { RefreshToken = "REFRESH_TOKEN" };
client.RefreshToken(state);
return state;
}
}
Tengo credenciales de una cuenta con acceso a Google Analytics,
Estoy buscando utilizar la API de informes centrales de Analytics http://code.google.com/apis/analytics/docs/gdata/home.html
He encontrado ejemplos que usan nombre de usuario / contraseña llamando setUserCredentials, pero he visto comentarios, esto es menos seguro / tiene un límite de solicitud bajo (y no existe en el último cliente).
Además, me parecen ejemplos que usan oauth, pero requieren la interacción del usuario y otorgan acceso a la cuenta de usuario de Google.
Sin embargo, estoy buscando ejecutar un servicio que no requiera ninguna interacción del usuario y que se conecte a una cuenta de google predefinida (no relacionada con el usuario que la está viendo).
Luego puedo almacenar los resultados en una base de datos, y los usuarios finales pueden consultar los resultados de la base de datos.
He visto información sobre el uso de AccessType = Offline la primera vez que inicias sesión, que luego devuelve un token de acceso y un refreshtoken. http://code.google.com/apis/accounts/docs/OAuth2WebServer.html#offline
Sin embargo, en mi ejemplo, el usuario final nunca iniciará sesión en la aplicación. ¿Podría tener una aplicación de administración separada que obtenga un token de actualización y almacene el token de actualización en la tabla config / lookup? Luego, la aplicación principal puede usar la extracción del token de actualización desde la tabla config / lookup y obtener un token de acceso para poder consultar la cuenta de Google Analytics.
Estoy buscando un ejemplo de C # que use AccessType = Offline, y separe la obtención del token de actualización y el uso del token de actualización para obtener un token de acceso para consultar la cuenta de Google Analytics.
Gran respuesta Ian y me ayudó a ponerme en marcha en la dirección correcta más que cualquier otra respuesta que pude encontrar en línea. Algo debe haber cambiado en el objeto AnalyticsService porque la línea:
var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");
no funcionó para mí y tuve que usar lo siguiente:
var request = asv.Data.Ga.Get("ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID", "2012-01-01", "2012-02-20", "ga:visitors");
Espero que esto ayude a otros a que su respuesta me haya ayudado. ¡Gracias!
La respuesta de Ian me ayudó mucho pero seguí recibiendo un error al ejecutar el comando curl. Investigó un poco y descubrió que los pasos para obtener el código de acceso y el token de actualización pueden ser más fáciles si va a https://code.google.com/oauthplayground/ y verifica la configuración de configuración de oAuth. Arriba a la derecha de la página hay un botón de configuración. seleccionado "Usar sus propias credenciales de OAuth". Puede obtener su código de acceso y solicitar un token de actualización desde aquí.
Espero que esto ayude.
Puedes obtener un token de actualización de OAuth Playground manualmente. Si necesita un token de actualización para una cuenta de servicio como yo, asegúrese de que
- Haga clic en la configuración a la derecha.
- Marque Usar sus propias credenciales de OAuth
- Complete su identificación de cliente y secreto
- Cierre la configuración
- Haga clic en el botón Actualizar en el paso 2
- A continuación, guarde el token de actualización para usar en su aplicación