Workflow d'authentification mono-utilisateur

À l'instar du workflow de compte de service, le flux d'authentification d'utilisateur unique utilise les fonctionnalités d'autorisation et de gestion des utilisateurs proposées par l'UI 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 donne accès à tous les comptes Google Ads.

Comme il n'y a qu'un seul utilisateur impliqué, vous pouvez vous appuyer sur des outils tels que l'interface de ligne de commande gcloud ou l'exemple de code GenerateUserCredential au lieu de créer votre propre flux d'authentification des utilisateurs OAuth 2.0.

Un cas d'utilisation associé à ce workflow se présente lorsque vous pouvez accéder à vos comptes à l'aide de quelques identifiants de connexion (par exemple, trois ou quatre utilisateurs). Dans ce cas, l'effort de développement nécessaire pour créer un workflow d'authentification des utilisateurs OAuth complet n'est pas justifié par rapport à l'effort nécessaire pour obtenir l'autorisation de trois ou quatre utilisateurs à l'aide d'un outil en ligne de commande tel que gcloud CLI.

Inconvénients

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

  1. Le workflow d'authentification des utilisateurs vous oblige à créer un ID client et un code secret OAuth 2.0 dans la console Google Cloud, ce qui nécessite plus d'étapes de configuration que la création d'un compte de service et d'une clé.
  2. Votre application peut être soumise à une procédure de validation supplémentaire pour les applications Google Cloud.
  3. Si l'utilisateur autorisé quitte l'équipe ou l'entreprise, il est possible que votre application cesse de fonctionner si vous le supprimez de vos comptes ou si vous désactivez son compte utilisateur. Les comptes de service n'étant pas associés à des utilisateurs individuels, ce risque est évité.
  4. L'utilisateur qui autorise le compte Google Ads doit prendre des précautions supplémentaires, comme activer l'authentification à deux facteurs, pour éviter que son compte Google ne soit piraté en raison d'une sécurité insuffisante, de logiciels malveillants ou d'hameçonnage. Les comptes de service sont moins vulnérables à ce problème, car certains de ces modes d'attaque ne s'appliquent pas directement à eux.

Générer des identifiants

  1. Suivez les instructions pour configurer un écran de consentement OAuth pour votre application et ajouter https://www.googleapis.com/auth/adwords en tant que champ d'application OAuth 2.0.

  2. Créez un ID client et un code secret client en suivant les instructions. Une fois le client OAuth 2.0 créé, téléchargez son fichier JSON en cliquant d'abord sur l'icône de téléchargement du client OAuth, puis sur le bouton "Télécharger au format JSON" sur l'écran suivant. 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. S'il manque des accès à certains comptes, suivez les instructions pour accorder les accès nécessaires.

  4. Téléchargez et installez gcloud CLI. Une fois l'outil installé, vérifiez qu'il fonctionne correctement en exécutant la commande gcloud version à partir d'une invite de ligne de commande. Le résultat peut se présenter comme suit.

    :~$ 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. Générez un jeton d'actualisation OAuth 2.0 en exécutant l'outil 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>

    Le fichier credentials.json provient de l'étape précédente.

  6. La commande gcloud ouvre une fenêtre de connexion à un compte Google dans une nouvelle fenêtre de navigateur et vous guide tout au long des étapes d'authentification OAuth 2.0. Assurez-vous de vous connecter en tant qu'utilisateur sélectionné lors des étapes précédentes. Si votre application n'est pas validée, un écran d'avertissement peut s'afficher. Dans ce cas, vous pouvez cliquer sur le lien Afficher les options avancées, puis sur l'option Accéder à PROJECT_NAME (non validé).

  7. Une fois que vous avez vérifié les niveaux d'accès, 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. Le message suivant s'affiche sur la page :

    Authorization code granted. Close this tab.

    La commande gcloud affiche le message suivant :

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

    Ouvrez maintenant le fichier application_default_credentials.json. Son contenu doit ressembler à 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 obtenir des instructions sur la configuration de votre bibliothèque cliente.

Java

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

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

.NET

Vous pouvez initialiser votre instance GoogleAdsClient au moment de l'exécution, en utilisant les identifiants que vous avez obtenus de l'utilisateur dont vous appelez les comptes API.

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

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

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

PHP

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

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://www.googleapis.com/oauth2/v3/token

Vous pouvez maintenant 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/v21/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"

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"
}