Erreur 403 de l'API Google Analytics: "L'utilisateur ne possède aucun compte Google Analytics"


146

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 se fait sans problème, jusqu'à ce qu'il tente d'accéder aux données. Le code 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, le suivi de plusieurs sites Web et je peux y accéder à partir du navigateur Web sans problème. J'ai autorisé l'API Analytics via la console des API Google, et l'accès à l'API me donne les bonnes données.

Réponses:


302

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

J'ai obtenu l'adresse e-mail (quelque chose comme xxxxxx@developer.gserviceaccount.com) pour le compte de service en regardant sous l'onglet "Accès API" dans la console des API Google.

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

Bonne chance!


8
C'est la meilleure réponse, je l'ai essayé et ça marche comme du charme !! Merci beaucoup @Sebastian!
mongotop

1
si vous avez plus d'un profil dans votre compte et que vous souhaitez accéder à leurs données à l'aide de l'API GA, devez-vous continuer à ajouter xxxxx@developer.gserviceaccount.com au profil Analytics, ou il existe un moyen plus efficace sans impliquer de méthode manuelle. Merci!
mongotop

2
@mongotop vous êtes les bienvenus! Malheureusement, je ne connais pas un moyen plus efficace de le faire - faites-nous savoir dans les commentaires si vous en trouvez un.
SM

1
Si vous ajoutez l'utilisateur au niveau de la propriété, assurez-vous de l'ajouter à la vue appropriée, car l'interface utilisateur Analytics est parfois trompeuse
tacone

1
Tu es une légende, j'ai passé toute la journée à essayer de mettre ça en place.
dspacejs

80

Ajoutez simplement l'e-mail que vous avez donné (format de 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com)

aux gestionnaires d'utilisateurs:

L'utilisateur n'a pas de compte Google Analytics

Je souhaite que cela vous aide


2
Malheureusement, l'erreur n'a pas disparu. Message fixe: GAPI: impossible de demander les données du compte. Erreur: "{" error ": {" errors ": [{" domain ":" global "," reason ":" code ": 403," message ":" L'utilisateur ne possède aucun compte Google Analytics. "}}"
JosFabre

1
@Lev sur 3 ans cette réponse est toujours valable. J'espérais juste que Google l'avait amélioré, mais non. Cela a été fait parfaitement: D
itsnikolay

28

J'étais confronté au même problème. Il a été résolu en ajoutant l'ID de messagerie de l'utilisateur du compte de service ( your account@yourwebsite-dev.iam.gserviceaccount.com) aux utilisateurs de votre compte Analytics sous-

Analytics-Home Page -> Admin (volet de gauche) -> Gestion des utilisateurs -> ajouter (cliquez sur le signe plus sur le côté droit du menu) -> Ajouter un nouvel utilisateur -> Ajouter l'ID de messagerie dans entrez les adresses e-mail.

entrez la description de l'image ici

Maintenant, cela résoudra le problème.


1
Pourquoi cette réponse n'est-elle pas acceptée? Je passe 2 jours à essayer de savoir pourquoi en suivant le tutoriel qui m'a conduit à cette erreur.
Ragnar

8

Cela est mentionné dans un commentaire ci-dessus, mais si vous ajoutez l'adresse e-mail sous la gestion des utilisateurs de votre compte , cela ne fonctionnera pas. Vous devez cliquer sur la gestion des utilisateurs sous la partie vue de l'écran.

entrez la description de l'image ici


Je sais que de nombreuses années se sont écoulées, mais j'ai maintenant ajouté l'adresse au compte , et il semble que cela fonctionne bien.
Peter

Je ne peux pas voir le User Managementlien sous Vue de ma fin
aldrien.h

4

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


6
Je vais juste laisser ceci ici: Lien vers l' interface Web de Google Analytics
naXa

Et où est le mot de passe pour les e-mails? J'ai essayé le mot de passe que google me montre avant de télécharger le certificat .p12 mais il n'est pas valide
ymakux

2

J'obtenais l'erreur 403 jusqu'à ce que je change les autorisations du compte de messagerie de l'intérieur de Google Analytics de `` Lire et analyser '' à autre chose, je l'enregistre, puis je change les autorisations en `` Lire et analyser '' et cela a fonctionné.


Cela a aidé. J'ai créé un nouveau "Compte de service" sous API & Auth / Credentials; et a enregistré la paire de clés .p12. Je suis ensuite entré dans la console de gestion des utilisateurs d'Analytics et j'ai ajouté l'adresse e-mail de l'utilisateur du service. L'autorisation .p12 à l'aide de l'API PHP fonctionne, mais uniquement si je coche «Lire et analyser» uniquement dans la liste des autorisations.
Johnny O

2

Juste au cas où cela ne fonctionne pas, essayez d'ouvrir votre fichier JSON que vous avez téléchargé et recherchez client_emailet copiez cette adresse e-mail et ajoutez-la au fichier de visualisation

Cliquer sur

Analytics-Home Page ->Admin(left pane) -> User Management -> add (click on plus sign on right side of the menu) -> Add new User -> Add the client_email address which you copied.

Si ça ne marche toujours pas

Analytics-Homepage-> Admin ->Views->User Management(Click on add(+) symbol, add this ccopied client_email address and give permissions and save it.

1

Je frappais l'erreur 403. Ces étapes m'ont contourné. Pour être clair, j'essayais de faire en sorte que l'exemple de Google "HelloAnalytics.php" fonctionne avec OAuth (sans interaction de l'utilisateur, adapté au travail cron, etc.).

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

L'autorisation .p12 à l'aide de l'API PHP fonctionne si je coche uniquement "Lire et analyser" uniquement dans la liste des autorisations. Si j'ajoute «Gérer les utilisateurs» et / ou «Modifier», j'obtiens le 403. J'espère que cela vous sera utile, j'ai travaillé dessus pendant quelques heures ...


0

J'ai eu ce problème aussi, et j'ai trouvé que le problème était que j'avais demandé trop d'autorisations. La Developer Console dit de demander les deux http://www.googleapis.com/auth/analytics et les http://www.googleapis.com/auth/analytics.readonly autorisations. Cela n'a pas fonctionné lorsque j'utilisais également la subrevendication. Une subréclamation demande à Google d'émettre un jeton d'accès qui fonctionne pour le compte d'un autre utilisateur - dans mon cas, le compte Google qui possède le compte de service. J'ai supprimé l' analyticsautorisation et je suis resté fidèle analytics.readonlyà la revendication secondaire:

{
  "iss":"123123123123123-xxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",
  "sub":"me.example@gmail.com"
  "scope":"http://www.googleapis.com/auth/analytics",
  ...
}

Le jeton Bearer émis me permet d'effectuer (au moins certaines) des requêtes Google Analytics sur des profils appartenant à des comptes Google complètement différents, mais qui ont été partagés (en lecture seule) avec mon utilisateur gmail (me.example@gmail.com) .


1
Qu'est-ce qu'un sous lorsque j'utilise le SDK client Google Analytics?
Dejell

Je souhaite que cela fonctionne! J'obtiens l'erreur suivante lorsque j'essaie de faire de même: Google_Auth_Exception [401]: Erreur lors de l'actualisation du jeton OAuth2, message: '{"error": "unauthorized_client", "error_description": "Client non autorisé ou étendue dans la demande." } '
SEoF

Je vous suggère de continuer. Nous l'utilisons toujours pour récupérer les données en temps réel de GA toutes les quelques minutes, le tout en utilisant bash, rien de moins!
mogsie

0

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 du 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 souhaite accéder.

Confus, mais heureusement corrigé (sans merci à Google!)


J'essaye de trouver ce «X». Pouvez-vous publier une capture d'écran?
Dejell

0

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

Il suffit donc de fournir un sous-argument, avec un e-mail auquel vous avez déjà donné accès dans le rapport et les choses devraient bien fonctionner!


0

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


0

Ce message que nous recevons lorsqu'aucune autorisation n'est accordée client_email, dans google alalytics , client_emailne provient du fichier JSON . pour accorder l'autorisation client_emailque vous utilisez dans votre application, accédez au site Google Analytics et cliquez sur "Admin (icône de configuration)"

entrez la description de l'image ici

vous obtiendrez la liste du menu à droite, cliquez sur "Afficher la gestion des utilisateurs"

entrez la description de l'image ici

Là, vous verrez l'icône "+" et "ajouter un utilisateur",

entrez la description de l'image ici

une fois que vous avez cliqué dessus, vous devez ajouter client_emaille "champ d'adresse e-mail" et l'enregistrer, vous devriez être prêt à partir!

entrez la description de l'image ici


-1

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 simple fait d'avoir un compte Google ne vous donne pas automatiquement accès à Analytics. Tout d'abord, vous devez vous inscrire à Google Analytics, un processus simple et unique ...


-1

Au lieu d'utiliser un compte de service, vous pouvez éviter la nécessité d'ajouter de nouvelles autorisations utilisateur (selon les principales réponses de ce fil de discussion) en utilisant les OAuth client IDinformations d'identification.

Accédez au tableau de bord des informations d'identification de l' API et cliquez sur "Créer des 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 désormais l'utiliser OAuth2WebServerFlowpour vous authentifier à chaque utilisation. Voici un exemple 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()
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.