Workflow zur Einzelnutzerauthentifizierung

Ähnlich wie beim Dienstkonto-Workflow werden beim Authentifizierungsablauf für einzelne Nutzer die Autorisierungs- und Nutzerverwaltungsfunktionen der Google Ads-Benutzeroberfläche verwendet, um der App Zugriff auf alle erforderlichen Konten zu gewähren. Dieser Authentifizierungsworkflow umfasst zwei Schritte:

  • Sie gewähren einem einzelnen Nutzer Zugriff auf alle Google Ads-Konten, die von der App verwaltet werden sollen.
  • Der Nutzer autorisiert Ihre App, seine Google Ads-Konten in seinem Namen zu verwalten, und gewährt der App so Zugriff auf alle Google Ads-Konten.

Da nur ein Nutzer beteiligt ist, können Sie Tools wie die gcloud CLI oder das GenerateUserCredential-Codebeispiel verwenden, anstatt einen eigenen OAuth 2.0-Nutzerauthentifizierungsablauf zu erstellen.

Ein ähnlicher Anwendungsfall für diesen Workflow ist, wenn auf Ihre Konten über eine Handvoll Nutzeranmeldungen (z. B. 3 bis 4 Nutzer) zugegriffen werden kann. Der Entwicklungsaufwand für die Erstellung eines vollständigen OAuth-Workflows für die Authentifizierung mehrerer Nutzer ist im Vergleich zum Aufwand für die Autorisierung von 3 bis 4 Nutzern mit einem Befehlszeilentool wie der gcloud CLI nicht gerechtfertigt.

Nachteile

Dieser Ablauf hat im Vergleich zum Dienstkonto-Workflow einige Nachteile:

  • Für den Workflow zur Nutzerauthentifizierung müssen Sie in der Google API Console eine OAuth 2.0-Client-ID und ein Secret erstellen. Dazu sind mehr Konfigurationsschritte erforderlich als beim Erstellen eines Dienstkontos und eines Schlüssels.
  • Wenn der autorisierte Nutzer das Team oder Unternehmen verlässt, funktioniert Ihre App möglicherweise nicht mehr, wenn Sie den Nutzer aus Ihren Konten entfernen oder das Nutzerkonto deaktivieren. Dienstkonten sind nicht an einzelne Nutzer gebunden, sodass dieses Risiko vermieden wird.
  • Zum Schutz vor Kontohacks durch Malware oder Phishing muss sich der Nutzer, der das Google Ads-Konto autorisiert, bei der Generierung von OAuth 2.0-Aktualisierungstokens mit einem Passkey authentifizieren. Dienstkonten erfordern keine Passkeys und sind weniger anfällig für gezielte Angriffe auf Nutzer wie Phishing.

Anmeldedaten generieren

  1. Konfigurieren Sie einen OAuth-Zustimmungsbildschirm für Ihre Anwendung und fügen Sie https://www.googleapis.com/auth/adwords als OAuth 2.0-Bereich hinzu. Weitere Informationen finden Sie unter OAuth-Zustimmungsbildschirm einrichten.

  2. Erstellen Sie eine Client-ID und einen Clientschlüssel. Folgen Sie dazu dieser Anleitung. Nachdem Sie den OAuth 2.0-Client erstellt haben, laden Sie die JSON-Datei des Clients herunter. Klicken Sie dazu im Bestätigungsdialogfeld auf den Button JSON herunterladen. Speichern Sie die Datei als credentials.json.

  3. Suchen Sie ein Nutzerkonto, das Zugriff auf alle Google Ads-Konten hat, die Sie mit Ihrer App verwalten möchten. Wenn es Konten gibt, auf die der Nutzer keinen Zugriff hat, gewähren Sie ihm Kontozugriff. Achten Sie darauf, dass für dieses Nutzerkonto ein Passkey eingerichtet wurde. Es kann bis zu 7 Tage dauern, bis ein neu erstellter Passkey als vertrauenswürdig gilt.

  4. Laden Sie die gcloud CLI herunter und installieren Sie sie. Prüfen Sie nach der Installation, ob das Tool ordnungsgemäß funktioniert. Führen Sie dazu den Befehl gcloud version über eine Eingabeaufforderung aus. Die Ausgabe sieht dann ungefähr so aus:

    gcloud version
    Google Cloud SDK 492.0.0
    alpha 2024.09.06
    beta 2024.09.06
    bq 2.1.8
    bundled-python3-unix 3.11.9
    core 2024.09.06
    enterprise-certificate-proxy 0.3.2
    gcloud-crc32c 1.0.0
    
  5. Generieren Sie ein OAuth 2.0-Aktualisierungstoken, indem Sie das gcloud CLI-Tool mit der Datei credentials.json aus dem vorherigen Schritt ausführen. Der Parameter --client-id-file muss übergeben werden, damit das Aktualisierungstoken unter Ihrem Google API Console-Projekt und nicht unter dem Standardprojekt der gcloud CLI ausgestellt wird:

    gcloud auth application-default login \
      --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \
      --client-id-file=PATH_TO_CREDENTIALS_JSON
  6. Mit dem Befehl gcloud wird ein Google-Konto-Anmeldefenster in einem neuen Browserfenster geöffnet und Sie werden durch die OAuth 2.0-Authentifizierungsschritte geführt. Melden Sie sich als der Nutzer an, den Sie in den vorherigen Schritten ausgewählt haben, und bestätigen Sie Ihre Identität mit einem Passkey. Wenn Ihre App nicht überprüft ist, wird möglicherweise ein Warnbildschirm angezeigt. In solchen Fällen können Sie auf den Link Erweitert und dann auf die Option Weiter zu PROJECT_NAME (unsicher) klicken.

  7. Klicken Sie nach der Überprüfung der Bereiche auf Weiter, um die Berechtigung zu erteilen. Der Browser ruft https://cloud.google.com/sdk/auth_success auf, was bedeutet, dass die Authentifizierung erfolgreich war. Auf der Seite wird die folgende Meldung angezeigt:

    Authorization code granted. Close this tab.

    Der Befehl gcloud gibt die folgende Meldung aus:

    Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]
    

    Öffnen Sie die Datei application_default_credentials.json. Der Inhalt sieht etwa so aus:

    {
      "account": "",
      "client_id": "******.apps.googleusercontent.com",
      "client_secret": "******",
      "refresh_token": "******",
      "type": "authorized_user",
      "universe_domain": "googleapis.com"
    }
    

Konfiguration für Clientbibliothek

Wählen Sie den Tab für Ihre Programmiersprache aus, um eine Anleitung zum Konfigurieren Ihrer Clientbibliothek aufzurufen. Wenn der autorisierte Nutzer über ein Google Ads-Verwaltungskonto auf Kundenkonten zugreift, legen Sie für login-customer-id (oder loginCustomerId) die zehnstellige Kundennummer dieses Verwaltungskontos ohne Bindestriche fest.

Java

Konfigurieren Sie die folgenden Schlüssel in der Datei ads.properties.

api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

Weitere Optionen finden Sie im Konfigurationsleitfaden.

.NET

Legen Sie die OAuth 2.0-Anmeldedaten für die GoogleAdsConfig-Instanz fest und verwenden Sie sie, um das GoogleAdsClient-Objekt zu initialisieren.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
GoogleAdsClient client = new GoogleAdsClient(config);

Weitere Optionen finden Sie im Konfigurationsleitfaden.

Python

Konfigurieren Sie die folgenden Schlüssel in der Datei google-ads.yaml.

client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True

Weitere Optionen finden Sie im Konfigurationsleitfaden.

PHP

Konfigurieren Sie die folgenden Schlüssel in der Datei google_ads_php.ini.

[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"

[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"

Weitere Optionen finden Sie im Konfigurationsleitfaden.

Ruby

Konfigurieren Sie die folgenden Schlüssel in der Datei google_ads_config.rb.

Google::Ads::GoogleAds::Config.new do |c|
  c.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
  c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  c.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
  c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

Weitere Optionen finden Sie im Konfigurationsleitfaden.

Perl

Konfigurieren Sie die folgenden Schlüssel in der Datei googleads.properties.

clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

Weitere Optionen finden Sie im Konfigurationsleitfaden.

curl

Rufen Sie zuerst mit einem HTTP-Client ein OAuth 2.0-Zugriffstoken ab. In dieser Anleitung wird der Befehl curl verwendet.

curl \
  --data "grant_type=refresh_token" \
  --data "client_id=CLIENT_ID" \
  --data "client_secret=CLIENT_SECRET" \
  --data "refresh_token=REFRESH_TOKEN" \
  https://oauth2.googleapis.com/token

Sie können das Zugriffstoken in Ihren API-Aufrufen verwenden. Im folgenden Beispiel wird gezeigt, wie Sie einen Kampagnenbericht mit der Methode GoogleAdsService.SearchStream ausführen, um die Kampagnen in Ihrem Konto abzurufen. In diesem Leitfaden werden die Details der Berichterstellung nicht behandelt.

curl -i -X POST \
  https://googleads.googleapis.com/v26/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

Der Inhalt von query.json sieht so aus:

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}