Workflow d'authentification pour un seul utilisateur

Comme pour le workflow de compte de service, le flux d'authentification d'un seul utilisateur utilise les fonctionnalités d'autorisation et de gestion des utilisateurs proposées par l'interface utilisateur Google Ads pour accorder à l'application l'accès à tous les comptes nécessaires. Ce workflow d'authentification comporte deux étapes :

  • Vous accordez à un seul utilisateur l'accès à tous les comptes Google Ads qui doivent être gérés par l'application.
  • L'utilisateur autorise votre application à gérer ses comptes Google Ads en son nom, ce qui lui permet d'accéder à tous les comptes Google Ads.

Comme un seul utilisateur est impliqué, vous pouvez vous appuyer sur des outils tels que la gcloud CLI ou l'exemple de code GenerateUserCredential au lieu de créer votre propre flux d'authentification utilisateur OAuth 2.0.

Un cas d'utilisation associé à ce workflow est lorsque vos comptes sont accessibles via un petit nombre d'identifiants utilisateur (par exemple, trois à quatre utilisateurs). Dans ce cas, l'effort de développement nécessaire pour créer un workflow d'authentification multi-utilisateur OAuth complet n'est pas justifié par rapport à l'effort nécessaire pour obtenir l'autorisation de trois à quatre utilisateurs à l'aide d'un outil de ligne de commande tel que gcloud CLI.

Inconvénients

Ce flux présente quelques inconvénients par rapport au workflow de compte de service :

  • Le workflow d'authentification des utilisateurs nécessite de créer un ID client et un secret OAuth 2.0 dans la console Google APIs, ce qui nécessite plus d'étapes de configuration que la création d'un compte de service et d'une clé.
  • Si l'utilisateur autorisé quitte l'équipe ou l'entreprise, votre application peut cesser de fonctionner si vous supprimez l'utilisateur de vos comptes ou si vous désactivez son compte. Les comptes de service ne sont pas liés à des utilisateurs individuels, ce qui permet d'éviter ce risque.
  • Pour se protéger contre le piratage de compte par un logiciel malveillant ou par hameçonnage, l'utilisateur qui autorise le compte Google Ads doit s'authentifier avec une clé d'accès lorsqu'il génère des jetons d'actualisation OAuth 2.0. Les comptes de service ne nécessitent pas de clés d'accès et sont moins vulnérables aux attaques ciblant les utilisateurs, comme l'hameçonnage.

Générer des identifiants

  1. Configurez un écran de consentement OAuth pour votre application et ajoutez https://www.googleapis.com/auth/adwords en tant que champ d'application OAuth 2.0. Pour en savoir plus, consultez Configurer votre écran de consentement OAuth.

  2. Créez un ID client et un code secret du client en suivant ces instructions. Une fois le client OAuth 2.0 créé, téléchargez son fichier JSON en cliquant sur le bouton Télécharger au format JSON dans la boîte de dialogue de confirmation. Enregistrez le fichier sous le nom credentials.json.

  3. Identifiez un compte utilisateur ayant accès à tous les comptes Google Ads que vous souhaitez gérer à l'aide de votre application. Si certains comptes ne sont pas accessibles, accordez l'accès au compte à cet utilisateur. Assurez-vous que ce compte utilisateur a configuré une clé d'accès (un délai de sécurité de 7 jours peut s'appliquer avant qu'une clé d'accès nouvellement créée ne soit approuvée).

  4. Téléchargez et installez la gcloud CLI. Une fois l'installation terminée, vérifiez que l'outil fonctionne correctement en exécutant la commande gcloud version à partir d'une invite de commande. La sortie ressemble à ceci :

    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. Générez un jeton d'actualisation OAuth 2.0 en exécutant l'outil gcloud CLI avec le fichier credentials.json de l'étape précédente. La transmission du paramètre --client-id-file est requise pour que le jeton d'actualisation soit émis sous votre projet de la console Google APIs plutôt que sous le projet par défaut de gcloud CLI :

    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. La commande gcloud ouvre une fenêtre de connexion au compte Google dans une nouvelle fenêtre de navigateur et vous guide à travers les étapes d'authentification OAuth 2.0. Connectez-vous en tant qu'utilisateur sélectionné lors des étapes précédentes et validez votre identité à l'aide d'une clé d'accès. Si votre application n'est pas validée, un écran d'avertissement peut s'afficher. Dans ce cas, vous pouvez cliquer sur le lien Avancé, puis sur l'option Accéder à PROJECT_NAME (non sécurisé).

  7. Après avoir vérifié les champs d'application, cliquez sur le bouton Continuer pour accorder l'autorisation. Le navigateur accède à https://cloud.google.com/sdk/auth_success, ce qui indique que l'authentification a réussi. La page affiche le message suivant :

    Authorization code granted. Close this tab.

    La commande gcloud affiche le message suivant :

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

    Ouvrez le fichier application_default_credentials.json. Son contenu est semblable à ce qui suit :

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

Configuration de la bibliothèque cliente

Sélectionnez l'onglet correspondant à votre langage de programmation pour savoir comment configurer votre bibliothèque cliente. Si votre utilisateur autorisé accède aux comptes client via un compte administrateur Google Ads, définissez login-customer-id (ou loginCustomerId) sur le numéro client à 10 chiffres de ce compte administrateur, sans tirets.

Java

Configurez les clés suivantes dans votre fichier 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

Pour découvrir d'autres options, consultez le guide de configuration.

.NET

Définissez les identifiants OAuth 2.0 sur l'instance GoogleAdsConfig et utilisez-les pour initialiser l'objet GoogleAdsClient.

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);

Pour découvrir d'autres options, consultez le guide de configuration.

Python

Configurez les clés suivantes dans votre fichier 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

Pour découvrir d'autres options, consultez le guide de configuration.

PHP

Configurez les clés suivantes dans votre fichier 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"

Pour découvrir d'autres options, consultez le guide de configuration.

Ruby

Configurez les clés suivantes dans votre fichier 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

Pour découvrir d'autres options, consultez le guide de configuration.

Perl

Configurez les clés suivantes dans votre fichier 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

Pour découvrir d'autres options, consultez le guide de configuration.

curl

Commencez par utiliser un client HTTP pour récupérer un jeton d'accès OAuth 2.0. Ce guide utilise la commande curl.

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

Vous pouvez utiliser le jeton d'accès dans vos appels d'API. L'exemple suivant montre comment exécuter un rapport sur les campagnes à l'aide de la méthode GoogleAdsService.SearchStream pour récupérer les campagnes de votre compte. Ce guide ne couvre pas les détails des rapports.

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"

Le contenu de query.json est le suivant :

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