Passer votre premier appel d’API
Importante
En juin 2022, nous avons introduit l’authentification multifacteur comme exigence pour Bing Ads. Vous devrez peut-être quand même apporter une modification au code pour vous conformer à cette exigence. Microsoft Advertising effectue des vérifications techniques de l’application au début du mois d’octobre.
Ce billet de blog décrit les étapes à suivre pour garantir la conformité.
Pour plus d’informations, consultez le guide des exigences d’authentification multifacteur .
Si vous souhaitez simplement que quelque chose fonctionne immédiatement, suivez ces étapes pour obtenir vos informations utilisateur Microsoft Advertising.
Démarrage rapide de la production
Pour vous authentifier dans l’environnement de production, vous devez d’abord inscrire une application. Connectez-vous avec vos informations d’identification de compte Microsoft et accordez votre consentement à votre application pour gérer vos comptes Microsoft Advertising.
- Créez un fichier et collez-y le script suivant. Définissez
$clientId
sur l’ID d’application de votre application inscrite. Si vous avez inscrit une application web avec une clé secrète client, vous devez également inclure$client_secret=YourWebAppClientSecret
lors de la demande des jetons d’accès.
Remarque
Remplacez your_client_id ci-dessous par l’ID d’application (client) que le Portail Azure - inscriptions d'applications portail a attribué à votre application.
# Replace your_client_id with your registered application ID.
$clientId = "your_client_id"
Start-Process "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=$clientId&scope=openid%20profile%20https://ads.microsoft.com/msads.manage%20offline_access&response_type=code&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient&state=ClientStateGoesHere&prompt=login"
$code = Read-Host "Grant consent in the browser, and then enter the response URI here:"
$code = $code -match 'code=(.*)\&'
$code = $Matches[1]
# Get the initial access and refresh tokens.
$response = Invoke-WebRequest https://login.microsoftonline.com/common/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientId&scope=https://ads.microsoft.com/msads.manage%20offline_access&code=$code&grant_type=authorization_code&redirect_uri=https%3A%2F%2Flogin.microsoftonline.com%2Fcommon%2Foauth2%2Fnativeclient"
$oauthTokens = ($response.Content | ConvertFrom-Json)
Write-Output "Access token: " $oauthTokens.access_token
Write-Output "Access token expires in: " $oauthTokens.expires_in
Write-Output "Refresh token: " $oauthTokens.refresh_token
# The access token will expire e.g., after one hour.
# Use the refresh token to get new access and refresh tokens.
$response = Invoke-WebRequest https://login.microsoftonline.com/common/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientId&scope=https://ads.microsoft.com/msads.manage%20offline_access&code=$code&grant_type=refresh_token&refresh_token=$($oauthTokens.refresh_token)"
$oauthTokens = ($response.Content | ConvertFrom-Json)
Write-Output "Access token: " $oauthTokens.access_token
Write-Output "Access token expires in: " $oauthTokens.expires_in
Write-Output "Refresh token: " $oauthTokens.refresh_token
Enregistrez le fichier et nommez-le Get-Tokens-Production.ps1
(vous pouvez le nommer comme vous le souhaitez, mais l’extension doit être .ps1).
Pour gérer par programmation un compte Microsoft Advertising, vous devez donner votre consentement au moins une fois via le flux de consentement de l’application web. À partir de là, vous pouvez utiliser le dernier jeton d’actualisation pour demander de nouveaux jetons d’accès et d’actualisation sans aucune autre interaction de l’utilisateur.
Maintenant, pour exécuter
Get-Tokens-Production.ps1
, ouvrez une fenêtre de console. À l’invite de commandes, accédez au dossier dans lequel vous avez enregistréGet-Tokens-Production.ps1
et entrez la commande suivante :powershell.exe -File .\Get-Tokens-Production.ps1
Lorsque le script PowerShell s’exécute correctement, il démarre une session de navigateur dans laquelle vous entrez vos informations d’identification Microsoft Advertising. Une fois le consentement donné, la barre d’adresse du navigateur contient le code d’octroi (voir ?code=UseThisCode&...).
https://login.microsoftonline.com/common/oauth2/nativeclient?code=M.R4_BAY.f202904c-2269-4daf-1e21-862ed4d49143
Copiez le code d’octroi (votre propre code, et non l’exemple M.R4_BAY.f202904c-2269-4daf-1e21-862ed4d49143) et entrez-le dans la fenêtre de console à l’invite. Le script PowerShell retourne ensuite les jetons d’accès et d’actualisation. (Le script effectue un deuxième appel à Invoke-WebRequest comme exemple d’actualisation des jetons.) Vous devez traiter le jeton d’actualisation comme vous le feriez avec un mot de passe . si quelqu’un en a la main, il a accès à vos ressources. Le jeton d’actualisation est de longue durée, mais il peut devenir non valide. Si vous recevez une erreur invalid_grant, votre jeton d’actualisation n’est plus valide et vous devrez réexécuter le script PowerShell pour obtenir le
Get-Tokens-Production.ps1
consentement de l’utilisateur et un nouveau jeton d’actualisation.Créez un fichier et collez-y le script suivant. Définissez le sur
accessToken
la valeur que vous avez reçue etGet-Tokens-Production.ps1
sur$developerToken
le jeton de développeur que vous avez reçu en suivant les étapes décrites ici.$accessToken = "AccessTokenGoesHere"; $developerToken = "DeveloperTokenGoesHere"; [xml]$getUserRequest = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v13="https://bingads.microsoft.com/Customer/v13"> <soapenv:Header> <v13:DeveloperToken>{0}</v13:DeveloperToken> <v13:AuthenticationToken>{1}</v13:AuthenticationToken> </soapenv:Header> <soapenv:Body> <v13:GetUserRequest> <v13:UserId xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </v13:GetUserRequest> </soapenv:Body> </soapenv:Envelope>' -f $developerToken, $accessToken $headers = @{"SOAPAction" = "GetUser"} $uri = "https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v13/CustomerManagementService.svc" $response = Invoke-WebRequest $uri -Method post -ContentType 'text/xml' -Body $getUserRequest -Headers $headers Write-Output $response.Content
Enregistrez le fichier et nommez-le
Get-User.ps1
(vous pouvez le nommer comme vous le souhaitez, mais l’extension doit être .ps1).Maintenant, pour exécuter
Get-User.ps1
, ouvrez une fenêtre de console. À l’invite de commandes, accédez au dossier dans lequel vous avez enregistréGet-User.ps1
et entrez la commande suivante :powershell.exe -File .\Get-User.ps1
Lorsque le script PowerShell s’exécute correctement, il doit imprimer les détails de votre utilisateur Microsoft Advertising, y compris les rôles client. Pour plus d’informations, consultez GetUser.
Démarrage rapide du bac à sable
Pour vous authentifier dans l’environnement de bac à sable, vous n’avez pas besoin d’inscrire une application. Il vous suffit d’utiliser l’ID client public « Exemple d’application didacticiel », par exemple , 00001111-aaaa-2222-bbbb-3333cccc4444.
Inscrivez-vous pour obtenir un compte de bac à sable Microsoft Advertising . L’adresse e-mail du compte Microsoft (MSA) doit être outlook-int.com (par exemple, someone@outlook-int.com). Pour plus d’informations, consultez Bac à sable.
Créez un fichier et collez-y le script suivant.
# Replace the Tutorial Sample App ID with your registered application ID. $clientId = "00001111-aaaa-2222-bbbb-3333cccc4444" Start-Process "https://login.windows-ppe.net/consumers/oauth2/v2.0/authorize?client_id=$clientId&scope=openid%20profile%20https://api.ads.microsoft.com/msads.manage%20offline_access&response_type=code&redirect_uri=https://login.windows-ppe.net/common/oauth2/nativeclient&state=ClientStateGoesHere&prompt=login" $code = Read-Host "Grant consent in the browser, and then enter the response URI here:" $code = $code -match 'code=(.*)\&' $code = $Matches[1] # Get the initial access and refresh tokens. $response = Invoke-WebRequest https://login.windows-ppe.net/consumers/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientId&scope=https://api.ads.microsoft.com/msads.manage%20offline_access&code=$code&grant_type=authorization_code&redirect_uri=https://login.windows-ppe.net/common/oauth2/nativeclient" $oauthTokens = ($response.Content | ConvertFrom-Json) Write-Output "Access token: " $oauthTokens.access_token Write-Output "Access token expires in: " $oauthTokens.expires_in Write-Output "Refresh token: " $oauthTokens.refresh_token # The access token will expire e.g., after one hour. # Use the refresh token to get new access and refresh tokens. $response = Invoke-WebRequest https://login.windows-ppe.net/consumers/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientId&scope=https://api.ads.microsoft.com/msads.manage%20offline_access&code=$code&grant_type=refresh_token&refresh_token=$($oauthTokens.refresh_token)" $oauthTokens = ($response.Content | ConvertFrom-Json) Write-Output "Access token: " $oauthTokens.access_token Write-Output "Access token expires in: " $oauthTokens.expires_in Write-Output "Refresh token: " $oauthTokens.refresh_token
Enregistrez le fichier et nommez-le
Get-Tokens-Sandbox.ps1
(vous pouvez le nommer comme vous le souhaitez, mais l’extension doit être .ps1).Un utilisateur doit donner son consentement au moins une fois via le flux de consentement de l’application web. À partir de là, vous pouvez utiliser le dernier jeton d’actualisation pour demander de nouveaux jetons d’accès et d’actualisation sans aucune autre interaction de l’utilisateur.
Maintenant, pour exécuter
Get-Tokens-Sandbox.ps1
, ouvrez une fenêtre de console. À l’invite de commandes, accédez au dossier dans lequel vous avez enregistréGet-Tokens-Sandbox.ps1
et entrez la commande suivante :powershell.exe -File .\Get-Tokens-Sandbox.ps1
Lorsque le script PowerShell s’exécute correctement, il démarre une session de navigateur dans laquelle vous entrez vos informations d’identification Microsoft Advertising. Une fois le consentement donné, la barre d’adresse du navigateur contient le code d’octroi (voir ?code=UseThisCode&...).
https://login.windows-ppe.net/common/oauth2/nativeclient?code=M.R0_CD1.132de532-5105-7550-b1fd-d37f9af2f009
Copiez le code d’octroi (votre propre code, et non l’exemple M.R0_CD1.132de532-5105-7550-b1fd-d37f9af2f009) et entrez-le dans la fenêtre de console à l’invite. Le script PowerShell retourne ensuite les jetons d’accès et d’actualisation. (Le script effectue un deuxième appel à Invoke-WebRequest comme exemple d’actualisation des jetons.) Vous devez traiter le jeton d’actualisation comme vous le feriez avec un mot de passe . si quelqu’un en a la main, il a accès à vos ressources. Le jeton d’actualisation est de longue durée, mais il peut devenir non valide. Si vous recevez une erreur invalid_grant, votre jeton d’actualisation n’est plus valide et vous devrez réexécuter le script PowerShell pour obtenir le
Get-Tokens-Sandbox.ps1
consentement de l’utilisateur et un nouveau jeton d’actualisation.Créez un fichier et collez-y le script suivant. Définissez sur
accessToken
la valeur que vous avez reçue deGet-Tokens-Sandbox.ps1
.$accessToken = "AccessTokenGoesHere"; $developerToken = "BBD37VB98"; [xml]$getUserRequest = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v13="https://bingads.microsoft.com/Customer/v13"> <soapenv:Header> <v13:DeveloperToken>{0}</v13:DeveloperToken> <v13:AuthenticationToken>{1}</v13:AuthenticationToken> </soapenv:Header> <soapenv:Body> <v13:GetUserRequest> <v13:UserId xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </v13:GetUserRequest> </soapenv:Body> </soapenv:Envelope>' -f $developerToken, $accessToken $headers = @{"SOAPAction" = "GetUser"} $uri = "https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v13/CustomerManagementService.svc" $response = Invoke-WebRequest $uri -Method post -ContentType 'text/xml' -Body $getUserRequest -Headers $headers Write-Output $response.Content
Enregistrez le fichier et nommez-le
Get-User.ps1
(vous pouvez le nommer comme vous le souhaitez, mais l’extension doit être .ps1).Maintenant, pour exécuter
Get-User.ps1
, ouvrez une fenêtre de console. À l’invite de commandes, accédez au dossier dans lequel vous avez enregistréGet-User.ps1
et entrez la commande suivante :powershell.exe -File .\Get-User.ps1
Lorsque le script PowerShell s’exécute correctement, il doit imprimer les détails de votre utilisateur Microsoft Advertising, y compris les rôles client. Pour plus d’informations, consultez GetUser.