Question

J'ai les identifiants d'un compte avec accès à Google Analytics,

Je souhaite utiliser l'API Analytics Core Reporting http: / /code.google.com/apis/analytics/docs/gdata/home.html

J'ai trouvé des exemples qui utilisent le nom d'utilisateur / mot de passe appelant setUserCredentials, mais j'ai vu des commentaires, ceci est moins sécurisé / a une faible limite de requêtes (et n'existe pas dans le dernier client).

De plus, j'ai trouvé des exemples qui utilisent oauth, mais nécessitent une interaction de l'utilisateur et accordent l'accès au compte Google de l'utilisateur.

Cependant, je cherche à exécuter un service qui ne nécessite aucune interaction de l'utilisateur et se connecte à un compte Google prédéfini (sans rapport avec l'utilisateur qui le consulte).

Je peux ensuite stocker les résultats dans une base de données et les utilisateurs finaux peuvent interroger les résultats de la base de données.

J'ai vu des informations sur l'utilisation d'AccessType= Offline lors de votre première connexion, qui renvoie ensuite un jeton d'accès et un jeton d'actualisation. http://code.google.com/apis/accounts/docs/OAuth2WebServer .html # hors ligne

Dans mon exemple cependant, l'utilisateur final ne se connectera jamais à l'application. Puis-je avoir une application d'administration distincte qui obtient un jeton d'actualisation et stocke le jeton d'actualisation dans la table de configuration / de recherche? Ensuite, l'application principale peut utiliser le jeton d'actualisation extrait de la table de configuration / de recherche et obtenir un jeton d'accès pour pouvoir interroger le compte Google Analytics.

Je recherche un exemple C # qui utilise AccessType= Offline, et sépare la récupération du jeton d'actualisation et l'utilisation du jeton d'actualisation pour obtenir un jeton d'accès pour interroger le compte Google Analytics.

Était-ce utile?

La solution

Créez votre application https://code.google.com/apis/console/

Pour votre application, activez l'accès à Google Analytics et créez un ID client OAuth 2.0 pour votre site Web.

Accédez à:

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

Après avoir remplacé YOUR_APP_ID , YOUR_CALL_BACK_URL par les valeurs appropriées.

Important d'inclure access_type= offline .

Appuyez sur Accorder l'accès, cela redirigera vers HTTP://YOUR_CALL_BACK_URL?code=THIS_IS_YOUR_CODE. Copiez le code dans l'URL.

Avec le code, demandez le jeton d'actualisation à l'aide de l'invite 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

Après avoir modifié THIS_IS_YOUR_CODE , YOUR_APP_ID , YOUR_APPS_SECRET_CODE , YOUR_CALL_BACK_URL aux valeurs appropriées.

Enregistrez le refresh_token renvoyé.

Téléchargez la dernière version des bibliothèques .net Core Reporting V3.0 http://code.google.com/p/google-api-dotnet-client/ wiki / Téléchargements

Il y a un bogue dans la version actuelle de Google.Apis.Analytics.v3.cs, pour corriger cela copiez le code de ce fichier dans votre solution locale (et ne faites pas référence à 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-bêta

Et changez la propriété Dimensions d'un List<system.string> en un string.

Ou vous obtiendrez une erreur comme moi et ce type a fait http://www.evolutiadesign.co.uk/blog/using-the-google-analytics-api-with-c-shar/

Vous pouvez ensuite utiliser votre jeton d'actualisation pour générer un jeton d'accès sans intervention de l'utilisateur et utiliser le jeton d'accès pour exécuter un rapport sur 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;
        }
    }

Autres conseils

Excellente réponse Ian et cela m'a aidé à aller dans la bonne direction plus que toute autre réponse que j'ai pu trouver en ligne.Quelque chose doit avoir changé dans l'objet AnalyticsService car la ligne:

var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");

n'a pas fonctionné pour moi et j'ai dû utiliser les éléments suivants:

var request = asv.Data.Ga.Get("ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID", "2012-01-01", "2012-02-20", "ga:visitors");

J'espère que cela aidera d'autres personnes comme votre réponse m'a aidé.Merci!

La réponse d'Ian m'a beaucoup aidé mais j'ai continué à recevoir une erreur lors de l'exécution de la commande curl.J'ai effectué des recherches et constaté que les étapes pour obtenir le code d'accès et le jeton d'actualisation peuvent être simplifiées en accédant à https://code.google.com/oauthplayground/ et vérifiez vos paramètres de configuration oAuth.En haut à droite de la page, il y a un bouton de paramètres.sélectionné "Utiliser vos propres informations d'identification OAuth".Vous pouvez obtenir votre code d'accès et demander un jeton d'actualisation à partir d'ici.

J'espère que cela vous aidera.

Vous pouvez obtenir manuellement un jeton d'actualisation à partir du OAuth Playground . Si vous avez besoin d'un jeton d'actualisation pour un compte de service comme je l'étais, assurez-vous que vous

  1. Cliquez sur les paramètres à droite.
  2. Cochez Utilisez vos propres informations d'identification OAuth
  3. Saisissez votre identifiant client et votre secret
  4. Fermez les paramètres
  5. Cliquez sur le bouton Actualiser à l'étape 2
  6. Enregistrez ensuite le jeton d'actualisation pour l'utiliser dans votre application
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top