Partager via


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.

  1. 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.

Notes

Remplacez your_client_id ci-dessous par l’ID d’application (client) que le portail Azure - Inscriptions d’applications 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.

  1. 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.

  2. Créez un fichier et collez-y le script suivant. Définissez le sur accessToken la valeur que vous avez reçue et Get-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).

  3. 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 du didacticiel », c’est-à-dire 4c0b021c-00c3-4508-838f-d3127e8167ff.

  1. 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.

  2. Créez un fichier et collez-y le script suivant.

    # Replace the Tutorial Sample App ID with your registered application ID. 
    $clientId = "4c0b021c-00c3-4508-838f-d3127e8167ff"
    
    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.

  3. 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.

  4. Créez un fichier et collez-y le script suivant. Définissez sur accessToken la valeur que vous avez reçue de Get-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).

  5. 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.

Voir aussi

Prise en main