Comme les autres API Google, l'API Google Ads utilise le protocole OAuth 2.0 pour l'authentification et l'autorisation. OAuth 2.0 permet à votre application cliente de l'API Google Ads d'accéder au compte Google Ads d'un utilisateur sans avoir à gérer ni à stocker ses informations de connexion.
Comprendre le modèle d'accès Google Ads
Pour utiliser efficacement l'API Google Ads, vous devez comprendre son modèle d'accès. Nous vous recommandons de lire le guide sur le modèle d'accès Google Ads.
Workflows OAuth
Trois workflows courants sont utilisés lorsque vous travaillez avec l'API Google Ads.
Flux de compte de service
Il s'agit du workflow recommandé si votre workflow ne nécessite aucune interaction humaine. Ce workflow nécessite une étape de configuration, au cours de laquelle l'utilisateur ajoute un compte de service à son compte Google Ads. L'application peut ensuite utiliser les identifiants du compte de service pour gérer le compte Google Ads de l'utilisateur. La bibliothèque Python est configurée comme suit :
Si vous utilisez un fichier
google-ads.yamlou une chaîne YAML, ajoutez les éléments suivants à votre configuration pour définir le chemin d'accès au fichier JSON de clé privée dans votre environnement local :json_key_file_path: JSON_KEY_FILE_PATHAppelez ensuite les méthodes
load_from_storageouload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Si vous utilisez un
dictpour configurer la bibliothèque, incluez la paire clé-valeur suivante et appelez la méthodeload_from_dict, en transmettant la configurationdict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "json_key_file_path": JSON_KEY_FILE_PATH # ... } client = GoogleAdsClient.load_from_dict(configuration)Si vous utilisez des variables d'environnement, ajoutez les éléments suivants à votre configuration ou environnement
bash:export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATHAppelez ensuite la méthode
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env() ```
Si l'option de configuration json_key_file_path est présente dans l'une de ces méthodes de configuration et que l'option use_application_default_credentials est définie sur False ou n'est pas définie, la bibliothèque autorise automatiquement l'utilisation du flux de compte de service.
Pour en savoir plus, consultez le guide sur le workflow de compte de service.
Flux d'authentification à utilisateur unique
Ce workflow peut être utilisé si vous ne pouvez pas utiliser de comptes de service. Il nécessite deux étapes de configuration :
Autorisez un seul utilisateur à accéder à tous les comptes à gérer à l'aide de l'API Google Ads. Une approche courante consiste à accorder à l'utilisateur un compte administrateur de l'API Google Ads et à associer tous les comptes Google Ads à ce compte administrateur.
L'utilisateur exécute un outil tel que la gcloud CLI ou l'
generate_user_credentialsexemple de code pour autoriser votre application à gérer tous ses comptes Google Ads en son nom.
La bibliothèque peut être initialisée à l'aide des identifiants OAuth 2.0 de l'utilisateur comme suit :
Si vous utilisez l'outil gcloud CLI (recommandé)
Suivez la documentation Générer des identifiants pour configurer les identifiants par défaut de l'application dans votre environnement local.
Ajoutez la configuration suivante à votre chaîne
google-ads.yamlou YAML :use_application_default_credentials: trueAppelez ensuite la méthode
load_from_storageouload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Si vous utilisez un
dictpour configurer la bibliothèque, incluez la paire clé-valeur suivante et appelez la méthodeload_from_dict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "use_account_default_credentials": True # ... } client = GoogleAdsClient.load_from_dict(configuration)Si vous utilisez des variables d'environnement, ajoutez les éléments suivants à votre configuration ou environnement
bash:export GOOGLE_ADS_USE_ACCOUNT_DEFAULT_CREDENTIALS=trueAppelez ensuite la méthode
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
Si vous gérez directement les jetons OAuth
Suivez les étapes pour configurer un projet de console et télécharger le fichier JSON qui inclut l'ID client et le code secret client de votre projet.
Clonez la bibliothèque cliente Python sur votre machine et accédez à son répertoire :
$ git clone https://github.com/googleads/google-ads-python.git $ cd google-ads-pythonExécutez l'exemple en fournissant un chemin d'accès absolu au fichier JSON téléchargé à l'étape 1 :
$ python examples/authentication/generate_user_credentials.py -c PATH_TO_CREDENTIALS_JSONUne fois l'opération terminée, un jeton d'actualisation s'affiche dans votre console. Copiez-le et enregistrez-le pour l'étape suivante.
Configurez la bibliothèque en ajoutant les paramètres suivants à la configuration de votre choix :
Ajoutez la configuration suivante à votre chaîne
google-ads.yamlou YAML :client_id: INSERT_OAUTH2_CLIENT_ID_HERE client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE refresh_token: INSERT_REFRESH_TOKEN_HEREAppelez ensuite la méthode
load_from_storageouload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Si vous utilisez un
dictpour configurer la bibliothèque, incluez les paires clé-valeur suivantes et appelez la méthodeload_from_dict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "client_id": INSERT_OAUTH2_CLIENT_ID_HERE "client_secret": INSERT_OAUTH2_CLIENT_SECRET_HERE "refresh_token": INSERT_REFRESH_TOKEN_HERE # ... } client = GoogleAdsClient.load_from_dict(configuration)Si vous utilisez des variables d'environnement, ajoutez les éléments suivants à votre configuration ou environnement
bash:export GOOGLE_ADS_CLIENT_ID=INSERT_OAUTH2_CLIENT_ID_HERE export GOOGLE_ADS_CLIENT_SECRET=INSERT_OAUTH2_CLIENT_SECRET_HERE export GOOGLE_ADS_REFRESH_TOKEN=INSERT_REFRESH_TOKEN_HEREAppelez ensuite la méthode
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
Pour en savoir plus, consultez le guide sur le workflow d'authentification à utilisateur unique.
Flux d'authentification multi-utilisateur
Il s'agit du workflow recommandé si votre application permet aux utilisateurs de se connecter et de l'autoriser à gérer leurs comptes Google Ads en leur nom. Votre application crée et gère les identifiants utilisateur OAuth 2.0. La bibliothèque peut être initialisée à l'aide des identifiants de l'utilisateur comme suit, en supposant que votre application obtient les identifiants au moment de l'exécution, soit en exécutant un flux d'autorisation, soit en les chargeant à partir d'un datastore :
Un dict est le mécanisme de configuration le plus simple à utiliser lors de l'obtention d'identifiants au moment de l'exécution :
from google.ads.googleads.client import GoogleAdsClient
configuration = {
# ...
"client_id": client_id
"client_secret": client_secret
"refresh_token": refresh_token
# ...
}
client = GoogleAdsClient.load_from_dict(configuration)
Pour en savoir plus, consultez le guide sur le workflow d'authentification multi-utilisateur.
Authentification manuelle
Vous pouvez générer des identifiants d'authentification avec n'importe quelle approche et les fournir manuellement à GoogleAdsClient en instanciant directement la classe cliente. En supposant que l'objet d'identifiants que vous créez est une instance de google.auth.credentials.Credentials, vous pouvez le transmettre comme suit :
from google.ads.googleads.client import GoogleAdsClient
from google.auth import default
# This line retrieves ADCs from the environment. You can use any authentication
# approach as long as the `credentials` variable is an instance of
# `google.auth.credentials.Credentials`
credentials = default(scopes=["https://www.googleapis.com/auth/adwords"])
client = GoogleAdsClient(
credentials=credentials,
# ... insert remaining parameters
)
Que se passe-t-il si mon utilisateur gère plusieurs comptes ?
Il est courant qu'un utilisateur gère plusieurs comptes Google Ads, soit en y accédant directement, soit via un compte administrateur Google Ads. La bibliothèque cliente Python fournit les exemples de code suivants qui illustrent comment gérer ces cas.
- L'
get_account_hierarchyexemple de code montre comment récupérer la liste de tous les comptes sous un compte administrateur Google Ads. - L'exemple de code
list_accessible_customersmontre comment récupérer la liste de tous les comptes auxquels un utilisateur a un accès direct. Ces comptes peuvent ensuite être utilisés comme valeurs valides pour le paramètrelogin_customer_id.