web-dev-qa-db-fra.com

API Google Analytics: "L'utilisateur ne dispose pas des autorisations suffisantes pour ce compte."

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]:

  • Possède des autorisations complètes sur l'interface Web de Google Analytics. Je me suis connecté avec le compte [email protected] et j'ai pu visualiser les mêmes expériences que j'ai tenté de répertorier.
  • A activé l'API Analytics. Dans la console de l'API, j'ai confirmé dans la section Services que l'élément API Analytics est activé. (Tout comme YouTube Analytics est.)
  • J'utilise les valeurs AccountID, ProfileID et WebPropertyID appropriées. Copié directement à partir de l'interface Web de Google Analytics.

É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:

33
David Elner

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:"

50
Goose

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/

 enter image description here

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.

12
Simon Somlai

Assurez-vous que vous entrez le bon table_id 

(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
2
Shane

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!

2
Qin Wang

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.

2
John

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.

2
user2760338

Si vous êtes nouveau juste pour vous laisser savoir la procédure en 3 étapes requise 

  1. Activer l'API Google Analytics Reporting puis créer un compte de messagerie de service (identifiant client OAuth)
  2. Ajouter et donner l'autorisation de ce service email dans la console google 
  3. Ajouter et autoriser ce compte de messagerie de service dans le suivi Google Analytics -> Gestion des utilisateurs 
0
Zahid