In diesem Leitfaden wird beschrieben, wie Sie mit Dienstkonten auf die Google Ads API zugreifen.
Ein Dienstkonto ist ein Konto, das zu Ihrer App und nicht zu einem einzelnen Endnutzer gehört. Dienstkonten ermöglichen Interaktionen zwischen Servern, z. B. zwischen einer Webanwendung und einem Google-Dienst. Ihre App ruft Google APIs im Namen des Dienstkontos auf, sodass Nutzer nicht direkt beteiligt sind.
Dienstkonten verwenden einen OAuth 2.0-Ablauf, für den keine Autorisierung durch eine Person erforderlich ist. Stattdessen wird eine Schlüsseldatei verwendet, auf die nur Ihre App zugreifen kann.
Dienstkonten haben zwei wesentliche Vorteile:
Die Autorisierung für den Google API-Zugriff erfolgt als Konfigurationsschritt. So werden die Komplikationen vermieden, die mit anderen OAuth 2.0-Abläufen verbunden sind, die Nutzerinteraktionen erfordern.
Mit dem OAuth 2.0-Assertion-Ablauf kann Ihre App bei Bedarf andere Nutzer imitieren.
Es gibt zwei Möglichkeiten, die Autorisierung mit Dienstkonten durchzuführen: direkt oder per Identitätsübertragung (nicht empfohlen).
[Empfohlen] Autorisierung mit direktem Kontozugriff
Bei dieser Option gewähren Sie dem Dienstkonto direkten Zugriff auf Ihr Google Ads-Konto.
Kontozugriff einrichten
Erstellen Sie zuerst ein Dienstkonto mit Anmeldedaten.
Laden Sie den Dienstkontoschlüssel im JSON-Format herunter und notieren Sie sich die Dienstkonto-ID und die E-Mail-Adresse.
Melden Sie sich als Administrator in Ihrem Google Ads-Konto an. Rufen Sie Verwaltung > Zugriff und Sicherheit auf.
Klicken Sie auf dem Tab Nutzer auf die Schaltfläche +.
Geben Sie die E-Mail-Adresse des Dienstkontos in das Eingabefeld E-Mail ein. Wählen Sie die entsprechende Kontozugriffsebene aus und klicken Sie auf die Schaltfläche Konto hinzufügen. Hinweis: Die Zugriffsebenen „E-Mail“ und „Administrator“ werden für Dienstkonten nicht unterstützt.
Dem Dienstkonto wird Zugriff gewährt.
Clientbibliothek konfigurieren
Wählen Sie den Tab für Ihre Programmiersprache aus, um eine Anleitung zum Konfigurieren der Clientbibliothek zu erhalten.
Java
Legen Sie den JSON-Pfad für den privaten Schlüssel in Ihrer Konfiguration fest. Wenn Sie eine ads.properties
-Datei verwenden, fügen Sie Folgendes hinzu:
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
Weitere Informationen finden Sie im Konfigurationsleitfaden.
.NET
Konfigurieren Sie die folgenden Schlüssel in Ihrer App.config / Web.config
. Weitere Informationen finden Sie im Konfigurationsleitfaden.
<add key="OAuth2Mode" value="SERVICE_ACCOUNT" />
<add key="OAuth2SecretsJsonPath" value="JSON_KEY_FILE_PATH" />
Python
Legen Sie den JSON-Pfad für den privaten Schlüssel in Ihrer Konfiguration fest. Wenn Sie ein google-ads.yaml file
, einen YAML-String oder ein dict
verwenden, fügen Sie Folgendes hinzu:
json_key_file_path: JSON_KEY_FILE_PATH
Wenn Sie Umgebungsvariablen verwenden, fügen Sie Ihrer Bash-Konfiguration oder -Umgebung Folgendes hinzu:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
PHP
Konfigurieren Sie die folgenden Schlüssel in Ihrer google_ads_php.ini
. Weitere Informationen finden Sie im Konfigurationsleitfaden.
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"
Ruby
Konfigurieren Sie die folgenden Schlüssel in Ihrer google_ads_config.rb
.
c.keyfile = 'JSON_KEY_FILE_PATH'
Perl
Legen Sie den JSON-Pfad für den privaten Schlüssel und die ID des delegierten Kontos in Ihrer Konfiguration fest. Wenn Sie eine googleads.properties
-Datei verwenden, fügen Sie Folgendes hinzu:
jsonKeyFilePath=JSON_KEY_FILE_PATH
Wenn Sie Umgebungsvariablen verwenden, fügen Sie Ihrer Bash-Konfiguration oder -Umgebung Folgendes hinzu:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
[Nicht empfohlen] Autorisierung per Identitätsübertragung
Bei dieser Option übernehmen Sie mit dem Dienstkonto die Identität eines Nutzers, der Zugriff auf Ihr Google Ads-Konto hat. Dieser Ansatz funktioniert nur für Google Workspace-Kunden. Ein Dienstkonto kann nur die Identität von Nutzern (E‑Mail-Adressen) in derselben Google Workspace annehmen.
Vorbereitung
Eine Google Workspace-Domain, deren Inhaber Sie sind, z. B.
mydomain.com
odermybusiness.com
Ein Google Ads API-Entwickler-Token und optional ein Testkonto
Die Clientbibliothek für die verwendete Sprache
Ein Google API Console-Projekt, das für die Google Ads API konfiguriert wurde
Ein Google Ads-Nutzer mit Berechtigungen für das Google Ads-Konto, auf das Sie zugreifen möchten.
Dienstkonto-Zugriff einrichten
Da die Nutzeridentitätsübernahme nur auf Domainebene gesteuert wird, müssen Sie Ihre eigene Domain bei Google Workspace registrieren, wenn Sie Dienstkonten und den Assertion-Vorgang mit Google OAuth 2.0 verwenden möchten. Ihre App und ihre Nutzer können dann die Identität eines beliebigen Nutzers in der Domain annehmen.
Erstellen Sie zuerst ein Dienstkonto mit Anmeldedaten.
Laden Sie den Dienstkontoschlüssel im JSON-Format herunter und notieren Sie sich die Dienstkonto-ID.
Geben Sie die Dienstkonto-ID und den Google Ads API-Bereich (
https://www.googleapis.com/auth/adwords
) an Ihren Domainadministrator weiter.Bitten Sie den Domainadministrator, domainweite Befugnisse an Ihr Dienstkonto zu delegieren.
Wenn Sie der Domainadministrator sind, folgen Sie der Anleitung in der Hilfe.
Sie können jetzt mit dem Dienstkonto über den OAuth 2.0-Assertionsablauf auf Ihr Google Ads-Konto zugreifen.
Clientbibliothek konfigurieren
Wählen Sie den Tab für Ihre Programmiersprache aus, um eine Anleitung zum Konfigurieren der Clientbibliothek zu erhalten.
Java
Legen Sie den JSON-Pfad des privaten Schlüssels und die ID des delegierten Kontos in Ihrer Konfiguration fest.
Wenn Sie eine ads.properties
-Datei verwenden, fügen Sie Folgendes hinzu:
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
api.googleads.serviceAccountUser=IMPERSONATED_EMAIL
Weitere Informationen finden Sie im Konfigurationsleitfaden.
.NET
Konfigurieren Sie die folgenden Schlüssel in Ihrer App.config / Web.config
. Weitere Informationen finden Sie im Konfigurationsleitfaden.
<add key="OAuth2Mode" value="SERVICE_ACCOUNT" />
<add key="OAuth2SecretsJsonPath" value="JSON_KEY_FILE_PATH" />
<!-- Supply the email address of the user to impersonate. -->
<add key="OAuth2PrnEmail" value="IMPERSONATED_EMAIL" />
Python
Legen Sie den JSON-Pfad für den privaten Schlüssel und die Identität der E-Mail-Adresse in Ihrer Konfiguration fest.
Wenn Sie ein google-ads.yaml file
, einen YAML-String oder ein dict
verwenden, fügen Sie Folgendes hinzu:
json_key_file_path: JSON_KEY_FILE_PATH
impersonated_email: IMPERSONATED_EMAIL
Wenn Sie Umgebungsvariablen verwenden, fügen Sie Ihrer Bash-Konfiguration oder -Umgebung Folgendes hinzu:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
export GOOGLE_ADS_IMPERSONATED_EMAIL=IMPERSONATED_EMAIL
PHP
Konfigurieren Sie die folgenden Schlüssel in Ihrer google_ads_php.ini
. Weitere Informationen finden Sie im Konfigurationsleitfaden.
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"
impersonatedEmail = "IMPERSONATED_EMAIL"
Ruby
Konfigurieren Sie die folgenden Schlüssel in Ihrer google_ads_config.rb
.
c.keyfile = 'JSON_KEY_FILE_PATH'
c.impersonate = 'IMPERSONATED_EMAIL'
Perl
Legen Sie den JSON-Pfad für den privaten Schlüssel und die ID des delegierten Kontos in Ihrer Konfiguration fest. Wenn Sie eine googleads.properties
-Datei verwenden, fügen Sie Folgendes hinzu:
jsonKeyFilePath=JSON_KEY_FILE_PATH
impersonatedEmail=IMPERSONATED_EMAIL
Wenn Sie Umgebungsvariablen verwenden, fügen Sie Ihrer Bash-Konfiguration oder -Umgebung Folgendes hinzu:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
export GOOGLE_ADS_IMPERSONATED_EMAIL=IMPERSONATED_EMAIL
Sicherheitsbedenken
Da das Dienstkonto die Delegierungssteuerung auf Domainebene für Ihre Google Workspace-Domain hat, ist es wichtig, die Schlüsseldatei zu schützen, die einem Dienstkonto den Zugriff auf die Google-Dienste ermöglicht, für die es autorisiert ist. Das gilt insbesondere, da dieses Dienstkonto die Identität eines beliebigen Nutzers in der Domain übernehmen kann.
Eine weitere Best Practice besteht darin, Dienstkonten nur Zugriff auf die erforderlichen APIs zu gewähren. Dies ist eine vorbeugende Maßnahme, um die Menge an Daten zu begrenzen, auf die ein Angreifer zugreifen kann, wenn die Schlüsseldatei des Dienstkontos manipuliert wird.