Workflow für die Einzelnutzerauthentifizierung

Ähnlich wie beim [Workflow für Dienstkonten][service-account-workflow] werden beim Workflow für die Authentifizierung einzelner Nutzer die Autorisierungs- und Nutzerverwaltungsfunktionen der Google Ads-Benutzeroberfläche verwendet, um der App Zugriff auf alle erforderlichen Konten zu gewähren. Dieser Authentifizierungsworkflow besteht aus zwei Schritten:

  • 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][gcloud-cli] oder das [Codebeispiel GenerateUserCredential][generate-user-credentials-example] verwenden, anstatt einen eigenen OAuth 2.0-Workflow für die Nutzerauthentifizierung zu erstellen.

Ein weiterer Anwendungsfall für diesen Workflow ist, wenn auf Ihre Konten über einige wenige Nutzeranmeldungen zugegriffen werden kann (z. B. 3–4 Nutzer). In diesem Fall ist der Entwicklungsaufwand für die Erstellung eines umfassenden OAuth-Workflows für die Nutzerauthentifizierung im Vergleich zum Aufwand für die Autorisierung von 3–4 Nutzern mit einem Befehlszeilentool wie der gcloud CLI nicht gerechtfertigt.

Nachteile

Dieser Workflow hat im Vergleich zum Workflow für Dienstkonten einige Nachteile:

  1. Für den Workflow für die Nutzerauthentifizierung müssen Sie eine OAuth 2.0-Client-ID und einen Clientschlüssel in der Google Cloud Console erstellen. Das erfordert mehr Konfigurationsschritte als die Erstellung eines Dienstkontos und eines Schlüssels.
  2. Ihre App muss möglicherweise einen zusätzlichen [Google Cloud-App-Überprüfungsprozess][app-verification] durchlaufen.
  3. Wenn der autorisierte Nutzer das Team oder das 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 mit einzelnen Nutzern verknüpft, sodass dieses Risiko vermieden wird.
  4. Der Nutzer, der das Google Ads-Konto autorisiert, sollte zusätzliche Vorsichtsmaßnahmen treffen, z. B. die [2-Faktor-Authentifizierung aktivieren][2fa], um zu verhindern, dass sein Google-Konto aufgrund mangelnder Sicherheit, Malware oder Phishing gehackt wird. Dienstkonten sind weniger anfällig für dieses Problem, da einige dieser Angriffsmethoden nicht direkt auf sie angewendet werden können.

Anmeldedaten generieren

  1. Folgen Sie der [Anleitung][configure-oauth-consent], um einen OAuth-Zustimmungsbildschirm für Ihre Anwendung zu konfigurieren und https://www.googleapis.com/auth/adwords als OAuth 2.0-Bereich hinzuzufügen. Weitere Informationen finden Sie unter OAuth-Zustimmungsbildschirm einrichten.

  2. Folgen Sie der [Anleitung][create-credentials], um eine Client-ID und einen Clientschlüssel zu erstellen. Nachdem Sie den OAuth 2.0-Client erstellt haben, laden Sie die JSON-Datei des Clients herunter. Klicken Sie dazu zuerst auf das Symbol „OAuth-Client herunterladen“ und dann auf dem folgenden Bildschirm auf die Schaltfläche „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, für die der Zugriff fehlt, folgen Sie der [Anleitung][grant-access], um den erforderlichen Zugriff zu gewähren.

  4. [Laden Sie die gcloud CLI herunter und installieren Sie sie.][install-gcloud] Überprüfen Sie nach der Installation, ob das Tool ordnungsgemäß funktioniert, indem Sie den Befehl gcloud version an der Befehlszeile ausführen. Die Ausgabe kann so aussehen:

    :~$ 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
    gsutil 5.30
  5. Generieren Sie ein OAuth 2.0-Aktualisierungstoken, indem Sie das gcloud CLI-Tool ausführen:

    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>

    Die Datei credentials.json stammt aus dem vorherigen Schritt.

  6. Mit dem Befehl gcloud wird in einem neuen Browserfenster ein Google-Konto-Anmeldefenster 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. Wenn Ihre App nicht überprüft wurde, wird möglicherweise ein Warnbildschirm angezeigt. In solchen Fällen können Sie gefahrlos auf den Erweiterte Optionen Link und dann auf die Zu PROJECT_NAME (nicht überprüft) Option klicken.

  7. Klicken Sie nach der Überprüfung der Bereiche auf die Schaltfläche Weiter, um die Berechtigung zu erteilen. Der Browser leitet Sie zu https://cloud.google.com/sdk/auth_success weiter. Das 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 jetzt die Datei application_default_credentials.json. Der Inhalt sollte in etwa so aussehen:

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

Clientbibliothek konfigurieren

Wählen Sie den Tab aus, der Ihrer Programmiersprache entspricht, um eine Anleitung zum Konfigurieren Ihrer Clientbibliothek zu erhalten.

Java

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

api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

Weitere Optionen finden Sie in der [Konfigurationsanleitung][java-config-guide].

.NET

Sie können Ihre GoogleAdsClient-Instanz zur Laufzeit mit den Anmeldedaten initialisieren, die Sie vom Nutzer erhalten haben, dessen Konten Sie für API-Aufrufe verwenden.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN",
    ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

Weitere Optionen finden Sie in der [Konfigurationsanleitung][dotnet-config-guide].

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_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE

Weitere Optionen finden Sie in der [Konfigurationsanleitung][python-config-guide].

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 in der [Konfigurationsanleitung][php-config-guide].

Ruby

Konfigurieren Sie die folgenden Schlüssel in der Datei [google_ads_config.rb][ruby-config-file].

  Google::Ads::GoogleAds::Config.new do |c|
     c.client_id = 'INSERT_CLIENT_ID_HERE'
     c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
     c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
     c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
     c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
  end

Weitere Optionen finden Sie in der [Konfigurationsanleitung][ruby-config-guide].

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 in der [Konfigurationsanleitung][perl-config-guide].

curl

Verwenden Sie zuerst einen HTTP-Client, um ein OAuth 2.0-Zugriffstoken abzurufen. 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://www.googleapis.com/oauth2/v3/token

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

curl -i -X POST https://googleads.googleapis.com/v24/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_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"
}

[service-account-workflow]: /google-ads/api/docs/oauth/service-accounts [gcloud-cli]: https://cloud.google.com/sdk/gcloud [generate-user-credentials-example]: /google-ads/api/samples/generate-user-credentials [app-verification]: //support.google.com/cloud/answer/13461325 [2fa]: //support.google.com/google-ads/answer/12864186 [configure-oauth-consent]: /workspace/guides/configure-oauth-consent [create-credentials]: /workspace/guides/create-credentials#desktop-app [grant-access]: //support.google.com/google-ads/answer/6372672 [install-gcloud]: //cloud.google.com/sdk/docs/install [java-config-guide]: /google-ads/api/docs/client-libs/java/config-file [dotnet-config-guide]: /google-ads/api/docs/client-libs/dotnet/configuration [python-config-guide]: /google-ads/api/docs/client-libs/python/configuration [php-config-guide]: /google-ads/api/docs/client-libs/php/configuration [ruby-config-file]: //github.com/googleads/google-ads-ruby/blob/HEAD/google_ads_config.rb [ruby-config-guide]: /google-ads/api/docs/client-libs/ruby/configuration [perl-config-guide]: /google-ads/api/docs/client-libs/perl/configuration [oauth-playground]: /oauthplayground/ [playground-video]: //www.youtube.com/watch?v=KFICa7Ngzng