Ich arbeite an einem Projekt, bei dem Daten zur GMB-Leistung über die GMB-API erfasst werden sollen. Dazu müssen viele der Ergebnisse von reportInsights erfasst werden. Wir erstellen oder aktualisieren keine Datensätze für dieses Konto. Ich habe den Oauth2-Ansatz ausprobiert, der jedoch die Erlaubnis erfordert, und da wir keine Benutzerdaten abrufen oder aktualisieren, möchte ich Oauth vermeiden.Fehler 403 beim Zugriff auf Google My Business API über Dienstkonto
Aus der Dokumentation und für diesen Anwendungsfall glaube ich, ein Dienstkonto ist der beste Ansatz, und ich habe diese Berechtigung in der Google-API-Konsole erstellt.
ich Anmeldeinformationen erstellen können, aber wenn ich laufe den Prozess ich folgende Fehlermeldung erhalten:
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://mybusiness.googleapis.com/$discovery/rest?version=v3 returned "The request is missing a valid API key.">
Dies scheint seltsam, da ich einen gültigen Satz von Dienstkontodaten haben. Ich habe einen gültigen API-Schlüssel aus der Google-API-Konsole eingefügt, aber ich erhalte denselben Fehler.
Hier ist mein Python-Code:
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)
Der Fehler aus der letzten Zeile ausgelöst. Jede Hilfe wird geschätzt.
Haben Sie versucht, Schlüssel zu regenerieren? Manchmal verfallen sie oder haben Einschränkungen, die Sie in [Entwicklerkonsole] (https://console.developers.google.com/apis/credentials) überprüfen können. – zipa
Die verschiedenen Anmeldeinformationen sind alle neu und verfügen über die höchstmöglichen Berechtigungen. Haben Sie Richtlinien, was ich für das Dienstkonto und den API-Schlüssel hätte festlegen sollen? – analyticsPierce
Es gibt eine E-Mail-Adresse, die Google für jedes Projekt anbietet, eine lange, und ich habe meine Adresse für diese geändert und sie für mein Google Analytics-API-Projekt gelöst. – zipa