API de Google Analytics: “l'Utilisateur ne dispose pas des autorisations suffisantes pour ce compte.”

Je suis en train d'écrire une application Ruby qui accède à l'API de Google Analytics pour tirer vers le bas une certaine expérience de l'information.

L'application se connecte et s'authentifie à l'aide d'un Service de Google Compte par l'intermédiaire de 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'aide du client à l'encontre de YouTube Analytics API travaille sans problème. En utilisant le même compte pour accéder à google Analytics API 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]:

  • Dispose de toutes les autorisations pour le Google Analytics de l'interface web. Je me suis connecté à l'aide de la [email protected] compte et a été en mesure d'afficher les mêmes Expériences que j'ai tenté de liste.
  • A permis l'analyse de l'API. Au sein de l'API Console, je l'ai confirmé dans la section Services que l' Analytics API élément est passer à la SUITE. (Comme YouTube Analytics est).
  • Je suis à l'aide de la AccountID, ProfileID, et WebPropertyID valeurs. Copié directement à partir du web Google Analytics interface.

Étant donné que le compte de service peut accéder à au moins une API (YouTube Analytics), et le compte associé ([email protected]) peut accéder à l'interface web Analytics, il semble y avoir quelque chose de mal avec le compte de service de l'accès à l'Analytics API en particulier.

Des idées?

Sujets similaires:

  • avez-vous de donner les autorisations pour le compte de service sur votre GA profil? Admin > Affichage > Gestion des Utilisateurs > "Ajouter des autorisations pour:"
  • L'[email protected] compte dispose de toutes les autorisations. Cependant, votre commentaire ne me demander d'ajouter le service de messagerie de compte ainsi (c'est à dire [email protected]), qui semble résoudre le problème. Si vous voulez mettre cela sous la forme d'une réponse, je serais heureux de vous donner de crédit.
  • double possible de Analytics API Google Erreur 403: "l'Utilisateur n'a pas de Compte Google Analytics"
  • Celui-ci a un message d'erreur différent, est écrit en Ruby, et est déjà 6 mois... je ne pense pas que ce marquage comme un "duplicata" va aider quelqu'un à ce point. De Plus, même s'il s'agissait d'un doublon, en laissant un ouvert permettra à plus de gens de Google afin d'atteindre leur réponse (via le RÉFÉRENCEMENT.)
  • Ok, la solution était plus ou moins la même dans les deux cas, mais en voyant cette question m'a fait abandonner alors que la réponse à l'autre question a un détail supplémentaire qui en fin de compte il a réglé pour moi. Donc je viens de comprendre que l'existence de cette question en fait, il est difficile pour moi de trouver la réponse.
  • Une dernière précision: j'ai effectivement eu à la fois des messages d'erreur en même temps, mais peut-être que ce n'est pas le cas pour tout le monde
  • Je suis en désaccord: ma question a beaucoup plus de détails et des liens vers d'autres ressources, tandis que l'autre ne répondre qu'a "j'ai suivi les instructions de Google." Malgré la réponse étant les mêmes, les questions sont différentes; les utilisateurs ne trouverez pas de la même façon, ce qui fournit une couverture supplémentaire.
  • Pas de problèmes, j'ai mis à jour la réponse avec les informations supplémentaires
  • J'ai eu ce même problème, la question a été j'ai été en utilisant le profileID pour l'ensemble de votre compte. Je suis ensuite allé dans mon compte sur le web, et il a tiré le nom réel du site dans l'URL. C'est l'ID vers la fin, par exemple en temps réel/rt-vue d'ensemble/XXXXXXXXXXXXXXpYOURIDHERE/. Une autre méthode consiste à utiliser le code", ga.Service.De la gestion.Les profils.Liste("~all", "~all").Execute();" à la liste de tous les id de votre compte.

InformationsquelleAutor David Elner | 2014-01-06