web-dev-qa-db-fra.com

Erreur 403 de l'API Google Analytics: "L'utilisateur n'a pas de compte Google Analytics"

Je crée un script basé sur le guide étape par étape de Google Analytics à partir de cette page:

https://developers.google.com/analytics/resources/tutorials/hello-analytics-api

L'autorisation est faite sans problème, jusqu'à ce qu'il tente d'accéder aux données. Le code de retour est 403 et le message d'erreur est:

L'utilisateur n'a pas de compte Google Analytics

Ce message n'a aucun sens: mon compte contient des données Google Analytics, suivi de plusieurs sites Web, et je peux y accéder sans problème depuis un navigateur Web. J'ai autorisé l'API Analytics via la console Google API, et l'accès à l'API me donne les bonnes données. 

124
user989501

J'ai eu ce problème également. Je l'ai résolu en ajoutant l'adresse e-mail de mon compte de service au profil Google Analytics auquel je voulais accéder. 

J'ai reçu l'adresse e-mail (quelque chose comme [email protected]) du compte de service en consultant l'onglet "Accès API" de la console API Google.

Ensuite, j'ai suivi les instructions de Google pour ajouter une adresse e-mail à un profil Google Analytics . Maintenant tout fonctionne comme prévu.

Bonne chance!

255
Sebastian Motraghi

Ajoutez juste votre email donné (format de 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com)

aux gestionnaires d'utilisateurs:

 User does not have any Google Analytics account

Souhaite que cela vous aide

67
itsnikolay

Il est mentionné dans un commentaire ci-dessus, mais si vous ajoutez l'adresse électronique dans la gestion des utilisateurs pour votre compte , cela ne fonctionnera pas. Vous devez cliquer sur User Management sous la partie view de l'écran.

 enter image description here

8
Lukos

Je faisais face au même problème. Le problème a été résolu en ajoutant l'ID de messagerie de l'utilisateur du compte de service (votre [email protected]) aux utilisateurs de votre compte Google Analytics.

Page d'accueil Analytics -> Admin (volet de gauche) -> Gestion des utilisateurs -> Ajouter (cliquez sur le signe plus situé à droite du menu) -> Ajouter un nouvel utilisateur -> Ajouter l'identifiant de messagerie dans la saisie des adresses électroniques.

 enter image description here

Maintenant, cela va résoudre le problème.

7
vikash singh

Vous obtiendrez également cette erreur si vous ne vous êtes jamais connecté avec le compte Google avec lequel vous essayez de vous authentifier.

4
Andrew Bullock

J'obtenais l'erreur 403 jusqu'à ce que je modifie les autorisations du compte de messagerie de Google Analytics de «Lire et analyser» vers un autre, que je l'enregistre, puis que je les rétablisse en «Lire et analyser».

2
Pearce

Je frappais l'erreur 403. Ces étapes m'ont fait tourner autour. Pour être clair, je cherchais à utiliser l'exemple de Hello "HelloAnalytics.php" de Google avec OAuth (sans interaction de l'utilisateur, approprié pour le travail cron, etc.).

Après avoir activé l'API Analytics, j'ai créé un nouveau "Compte de service" sous API & Auth/Credentials; et enregistré la paire de clés .p12. Je me suis ensuite rendu dans la console de gestion des utilisateurs Analytics et j'ai ajouté l'adresse électronique de cet utilisateur de service. 

L’autorisation .p12 utilisant l’API PHP fonctionne si je coche seulement "Lire et analyser" seulement dans la liste des autorisations. Si j'ajoute "Gérer les utilisateurs" et/ou "Modifier", je reçois le 403. J'espère que cela est utile. Je travaillais là-dessus pendant deux heures ...

2
Johnny O

J'ai eu ce problème aussi, et j'ai trouvé que le problème était que j'avais demandé trop d'autorisations. La console de développeur demande à demander les deux autorisations http://www.googleapis.com/auth/analytics et http://www.googleapis.com/auth/analytics.readonly. Cela n’a pas fonctionné lorsque j’utilisais également la revendication sub. Une réclamation sub indique à Google d'émettre un jeton d'accès qui exploite pour le compte d'un autre utilisateur - dans mon cas, le compte Google propriétaire du compte de service. J'ai retiré l'autorisation analytics et collé avec analytics.readonly avec la revendication secondaire:

{
  "iss":"123123123123123-xxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",
  "sub":"[email protected]"
  "scope":"http://www.googleapis.com/auth/analytics",
  ...
}

Le jeton porteur émis me permet d'effectuer (au moins certaines) requêtes Google Analytics sur des profils appartenant à des comptes Google totalement différents, mais partagés (en lecture seule) avec mon utilisateur gmail ([email protected]). .

0
mogsie

J'ai eu la même erreur, car je ne me suis pas connecté à Google Analytics. Donc, je l'avais résolu en me connectant au compte d'analyse.

0
Rumman Siddiqui

L'utilisateur pour lequel vous essayez d'utiliser l'API n'a pas activé son service GA.
Il ne suffit pas d’avoir un compte Google .

... Cependant, le fait d'avoir un compte Google ne vous accorde pas automatiquement accès à Analytics. Tout d'abord, vous devez vous inscrire à Google Analytics, un Une fois, processus simple ...

0
bldoron

J'ai réussi à résoudre ce problème en m'assurant que le

client = Google :: APIClient.new (: nom_application => 'X',: version_application => '1')

la variable de nom d'application 'X ci-dessus était le nom de COMPTE sur le tableau de bord GA, et non le nom de la propriété, qui dans mon cas était l'URL réelle du site auquel je veux accéder.

Déroutant, mais heureusement résolu (sans merci à Google!)

0
Jonathan_W

Le problème survient car nous ne fournissons pas d'argument "sub". À moins que nous ne fournissions cela, l'appel est passé au nom du courrier électronique de ce compte de service long.

Il suffit donc de fournir un sous-argument, avec un email auquel vous avez déjà donné accès dans le rapport et tout devrait bien fonctionner!

0
Sony Kadavan

Au lieu d'utiliser un compte de service, vous pouvez éviter la nécessité d'ajouter de nouvelles autorisations utilisateur (selon les réponses les plus fréquentes dans ce fil) en utilisant des informations d'identification OAuth client ID.

Accédez au tableau de bord des informations d'identification de l'API , puis cliquez sur "Créer les informations d'identification" -> "ID client OAuth". Ensuite, vous devriez obtenir un ID client et un secret client dont vous aurez besoin pour authentifier l'API.

Vous pouvez maintenant utiliser OAuth2WebServerFlow pour vous authentifier à chaque utilisation. Voici un exemple de python3:

from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow

# TODO: Fill these in...
CLIENT_ID = ''
CLIENT_SECRET = ''
VIEW_ID = ''

flow = OAuth2WebServerFlow(
    CLIENT_ID, CLIENT_SECRET,
    'https://www.googleapis.com/auth/analytics.readonly',
    redirect_uri='urn:ietf:wg:oauth:2.0:oob'
)

authorize_url = flow.step1_get_authorize_url()
print('Receive code from:\n%s\n' % authorize_url)
code = input('Enter code here:').strip()
credentials = flow.step2_exchange(code)

api = build('analyticsreporting', 'v4', credentials=credentials)
body={
    'reportRequests': [{
        'viewId': VIEW_ID,
        'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
        'metrics': [{'expression': 'ga:sessions'}],
        'dimensions': [{'name': 'ga:country'}]
    }]
}

data = api.reports().batchGet(body=body).execute()
0
AlexG