J'écris une application Ruby qui accède à l'API Google Analytics pour obtenir des informations sur les expériences.
L'application se connecte et s'authentifie à l'aide d'un compte de service Google via la fonction suivante:
def connect
...
@@client = Google::APIClient.new(:application_name => 'My Service App',
:application_version => '1.0.0')
key_file = Rails.root.join('config', 'privatekey.p12').to_s
key_secret = 'somesecret'
key = Google::APIClient::PKCS12.load_key(key_file, key_secret)
asserter = Google::APIClient::JWTAsserter.new(
SECRETS[:google_service_account_email],
['https://www.googleapis.com/auth/yt-analytics.readonly',
'https://www.googleapis.com/auth/analytics.readonly'
],
key
)
@@client.authorization = asserter.authorize()
...
end
... qui authentifie et découvre les deux API sans problème.
L'utilisation du client par rapport à l'API YouTube Analytics fonctionne sans problème. Utiliser le même compte pour accéder à l'API Analytics via ...
response = @@client.execute({
# 'analytics is the API object retrieved via discover_api()
:api_method => analytics.management.experiments.list,
:parameters => {
'accountId' => 'AAAAAAAA',
'profileId' => 'PPPPPPPP',
'webPropertyId' => 'UA-WWWWWWWW-#'
}
})
Résultats dans une réponse d'erreur 403:
{"domain":"global","reason":"insufficientPermissions","message":"User does not have sufficient permissions for this account."}
En ce qui concerne l'autorisation, j'ai vérifié le compte [email protected]:
Étant donné que le compte de service peut accéder à au moins une API (YouTube Analytics) et que le compte associé ([email protected]) peut accéder à l'interface Web Analytics, il semble qu'il y ait un problème avec le compte de service accédant à l'API Analytics en particulier. .
Des idées?
Sujets similaires:
Assurez-vous de donner au courrier électronique du compte de service (quelque chose comme [email protected]) les autorisations de lecture/écriture depuis votre vue GA.
Admin> Affichage> Gestion des utilisateurs> "Ajouter des autorisations pour:"
Choisissez le bon identifiant!
Dans mon cas, j'utilisais les informations d'identification correctes (identifiant de compte, secret du compte -> code_autorisation -> code_accès) ET j'avais les autorisations de messagerie configurées correctement, mais j'utilisais l'identifiant du compte sur la page Admin> Paramètres du compte et simplement ajouter ga: à l'avant.
L'identifiant dont vous avez réellement besoin est l'identifiant de la table! (ou c'est celui qui a fonctionné pour moi au moins puisque la plupart des gens ici mentionnent l'identifiant du compte, ce qui n'a pas fonctionné pour moi.). Vous pouvez le trouver ici: https://ga-dev-tools.appspot.com/account-Explorer/
Et puis vous pouvez interroger comme
service.get_ga_data(TABLE_ID,'2017-03-25','2017-03-25','ga:users,ga:pageviews')
J'ai trouvé cette API mal documentée dans l'ensemble et l'interface utilisateur n'était pas claire. Mais peut-être que c'est juste moi.
Assurez-vous que vous entrez le bon table_id
(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
Si vous voyez toujours ce message après avoir ajouté votre courrier électronique de développeur à l'utilisateur analytique.
Vous devrez peut-être ajouter une étendue à l'objet avant le nouveau Google_Service_Analytics ($ client);
$ client-> setScopes (" https://www.googleapis.com/auth/plus.login ");
J'ai passé toute la journée à essayer de résoudre ce problème!
Je devais également accéder à la console du développeur et activer l'API pour que cela fonctionne. Allez sur la console de développeur et sélectionnez votre projet et activez les API que vous souhaitez utiliser.
Même après avoir ajouté l'e-mail au niveau du compte dans Analytics, j'avais toujours le même problème d'autorisation, mais la suggestion suivante a aidé mais ne l'a pas résolu:
$ client-> setScopes (" https : //www.googleapis.com/auth/plus.login");
Cela n'a pas fonctionné pour moi mais cela a fonctionné:
$ client-> setScopes (" https : //www.googleapis.com/auth/analytics");
https: // est maintenant requis pour s'authentifier.
Si vous êtes nouveau juste pour vous laisser savoir la procédure en 3 étapes requise