Dienstkonten

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

  1. 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.

  2. Melden Sie sich als Administrator in Ihrem Google Ads-Konto an. Rufen Sie Verwaltung > Zugriff und Sicherheit auf.

  3. Klicken Sie auf dem Tab Nutzer auf die Schaltfläche +.

  4. 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.

  5. 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 oder mybusiness.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.

  1. Erstellen Sie zuerst ein Dienstkonto mit Anmeldedaten.

    Laden Sie den Dienstkontoschlüssel im JSON-Format herunter und notieren Sie sich die Dienstkonto-ID.

  2. 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.

  3. 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.