Je travaille sur un projet dans lequel nous souhaitons collecter des données sur les performances de GMB via l'API GMB. Cela implique la capture de nombreux résultats de reportInsights. Nous ne créons ou ne mettons à jour aucun enregistrement pour ce compte. J'ai essayé l'approche d'Oauth2 mais cela m'a obligé à fournir la permission et puisque nous n'accédons pas ou ne mettons pas à jour n'importe quelles données d'utilisateur je voudrais éviter Oauth. De la documentation et pour ce cas d'utilisation, je crois qu'un compte de service est la meilleure approche et j'ai créé cette information d'identification dans la console d'API de Google.Obtention d'une erreur 403 lors de l'accès à l'API Google My Business via le compte de service
Je peux créer des informations d'identification, mais, quand je lance le processus que je reçois l'erreur suivante:
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://mybusiness.googleapis.com/$discovery/rest?version=v3 returned "The request is missing a valid API key.">
Cela semble étrange puisque j'ai un ensemble valide de service d'identification de compte. J'ai inclus une clé API valide de la console API Google, mais j'ai la même erreur.
Voici mon code Python:
import os
import httplib2
import json
import argparse
import apiclient.discovery
from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build
api_name = 'mybusiness'
api_version = 'v3'
api_key = '<my valid api key from google api console that has permission for this GMB project>'
discovery_uri = 'https://mybusiness.googleapis.com/$discovery/rest?version={}'.format(api_version)
flow_scope='https://www.googleapis.com/auth/plus.business.manage'
credentials_file = '/Google_My_Business-service_account.json' # the service account credentials from the Google API console that have permission for this GMB project
credentials = ServiceAccountCredentials.from_json_keyfile_name(credentials_file, scopes=flow_scope)
print("credentials: ", credentials)
http = credentials.authorize(httplib2.Http())
print("http: ", http)
# Build the service object
service = build(api_name, api_version, http=http, developerKey=api_key, discoveryServiceUrl=discovery_uri)
L'erreur est renvoyée de la dernière ligne. Toute aide est appréciée.
Avez-vous essayé de régénérer la clé? Parfois, ils expirent, ou ont des restrictions que vous pouvez vérifier dans [Developer Console] (https://console.developers.google.com/apis/credentials) – zipa
Les différentes informations d'identification sont toutes récentes et ont les plus hauts niveaux d'autorisations possibles. Avez-vous des directives sur ce que j'aurais dû définir pour le compte de service et la clé API? – analyticsPierce
Il y a une adresse e-mail que google fournit pour chaque projet, une longue, et j'ai changé mon adresse pour celle-ci et elle l'a résolu pour mon projet d'API Google Analytics. – zipa