Partager via


Procédure pas à pas : Application web DE l’API Bing Ads en Java

Cet exemple d’application web Java demande le consentement de l’utilisateur via les informations d’identification que vous fournissez, puis obtient les comptes auxquels l’utilisateur authentifié peut accéder.

Vous devez d’abord inscrire une application et prendre note de l’ID client (ID d’application inscrit), de la clé secrète client (mot de passe inscrit) et de l’URI de redirection. Pour plus d’informations sur l’inscription d’une application et le flux d’octroi du code d’autorisation, consultez Authentification avec OAuth.

Vous aurez également besoin de votre jeton de développeur de production. Vous pouvez créer l’exemple étape par étape comme décrit ci-dessous ou télécharger d’autres exemples à partir de GitHub.

Remarque

Cet exemple illustre l’authentification OAuth en production. Pour plus d’informations sur la configuration du bac à sable, consultez Configuration du bac à sable.

Exemple d’authentification d’application web Walk-Through

  1. Ouvrez l’environnement de développement Eclipse.

  2. Créez un projet via Fichier ->Nouveau ->Projet ->Maven ->Projet Maven, puis cliquez sur Suivant.

  3. Dans la boîte de dialogue Nouveau projet Maven , vérifiez que l’option Créer un projet simple (ignorer la sélection de l’archétype) n’est pas sélectionnée, puis cliquez sur Suivant. Vous sélectionnerez un archétype Maven à l’étape suivante.

  4. Dans la boîte de dialogue Nouveau projet Maven , sélectionnez l’archétype de l’application web Maven, puis cliquez sur Suivant. L’ID de groupe est org.apache.maven.archetypes et l’ID d’artefact est maven-archetype-webapp.

  5. Dans la boîte de dialogue Nouveau projet Maven , spécifiez les paramètres d’artefact de votre projet, puis cliquez sur Terminer. Par exemple, vous pouvez définir l’ID de groupe sur com.microsoft.bingads.examples et l’ID d’artefact sur BingAdsWebApp.

  6. Ajoutez les fichiers JAR de servlet Javax requis à votre bibliothèque de projet s’ils ne se trouvent pas déjà dans votre chemin de build Java. Dans project Explorer, cliquez avec le bouton droit sur le projet BingAdsWebApp, puis cliquez sur Propriétés. Dans la boîte de dialogue Propriétés, accédez à l’onglet Java Build Path ->Bibliothèques, cliquez sur Ajouter des fichiers JARs externes, accédez à {EclipseInstallationPath}/plugins/ et sélectionnez par exemple javax.servlet.jsp_2.2.0.v201112011158 et javax.servlet_3.0.0.v201112011016.

  7. Incluez les enregistrements JAR servlet dans la commande du projet et les entrées exportées. Sous l’onglet Java Build Path -Order and Export (Chemin de build Java ->Order and Export ), cliquez sur Sélectionner tout (sélectionnez au moins les jaRs servlet), puis cliquez sur Terminer.

  8. Incluez les fichiers JAR servlet dans l’assembly de déploiement web du projet. Dans project Explorer, cliquez avec le bouton droit sur le projet BingAdsWebApp et sélectionnez Propriétés. Dans la boîte de dialogue Propriétés , accédez à Assembly de déploiement ->Ajouter, sélectionnez Entrées de chemin de build Java, puis cliquez sur Suivant. Sélectionnez tous les fichiers JAR que vous avez ajoutés aux étapes précédentes, cliquez sur Terminer dans la boîte de dialogue Nouvelle directive d’assembly , puis cliquez sur Appliquer dans la boîte de dialogue Propriétés .

  9. Dans Project Explorer, cliquez avec le bouton droit sur le fichier pom.xml et sélectionnez Ouvrir avec ->Text Editor. Ajoutez la dépendance com.microsoft.bingads comme indiqué dans l’exemple suivant et enregistrez pom.xml.

    Remarque

    Pour plus d’informations sur la dernière version de dépendance du KIT de développement logiciel (SDK), consultez la README.md GitHub du Kit de développement logiciel (SDK) Java Bing Ads.

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.microsoft.bingads.examples</groupId>
      <artifactId>BingAdsWebApp</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>BingAdsWebApp Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.microsoft.bingads</groupId>
          <artifactId>microsoft.bingads</artifactId>
          <version>13.0.17</version>
        </dependency>
      </dependencies>
      <build>
        <finalName>BingAdsWebApp</finalName>
      </build>
    </project>
    
  10. Dans Project Explorer, cliquez avec le bouton droit sur le dossier Contenu web de votre projet BingAdsWebApp et sélectionnez Nouveau fichier JSP>. Nommez le fichier index.jsp , puis cliquez sur Terminer.

  11. Ouvrez le fichier Index.jsp et remplacez son contenu par le bloc de code suivant. Vous devez modifier l’exemple ci-dessous avec les valeurs ClientId, ClientSecret et RedirectionUri qui ont été provisionnées lors de l’inscription de votre application. Vous devez également modifier l’exemple avec votre jeton de développeur de production. Si vous utilisez un bac à sable, vous devez suivre les étapes décrites dans Configuration du bac à sable.

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <%@ page import="java.net.URL" %>
    <%@ page import="com.microsoft.bingads.*" %>
    <%@ page import="com.microsoft.bingads.v13.customermanagement.*" %>
    
    <%! 
    	static AuthorizationData authorizationData;
    	static ServiceClient<ICustomerManagementService> CustomerService; 
    
    	private static java.lang.String DeveloperToken = "<DeveloperTokenGoesHere>";
    	private static java.lang.String ClientId = "<ClientIdGoesHere>";
    	private static java.lang.String ClientSecret = "<ClientSecretGoesHere>";
        private static java.lang.String RedirectUri = "<RedirectUriGoesHere>";
    
    	static long accountsCount = 0;
     %>
    
     <%! 
    	//Gets a User object by the specified Microsoft Advertising user identifier.
    
    	 static User getUser(java.lang.Long userId) throws Exception
    	 {
    	     GetUserRequest request = new GetUserRequest();
    
    	     request.setUserId(userId);
    
    	     return CustomerService.getService().getUser(request).getUser();
    	 }
    
    	 // Searches by UserId for accounts that the user can manage.
    
    	 static ArrayOfAdvertiserAccount searchAccountsByUserId(java.lang.Long userId) throws AdApiFaultDetail_Exception, ApiFault_Exception{       
    
    	     ArrayOfPredicate predicates = new ArrayOfPredicate();
    	     Predicate predicate = new Predicate();
    	     predicate.setField("UserId");
    	     predicate.setOperator(PredicateOperator.EQUALS);
    	     predicate.setValue("" + userId);
    	     predicates.getPredicates().add(predicate);
    
    	     Paging paging = new Paging();
    	     paging.setIndex(0);
    	     paging.setSize(10);
    
    	     final SearchAccountsRequest searchAccountsRequest = new SearchAccountsRequest();
    	     searchAccountsRequest.setPredicates(predicates);
    	     searchAccountsRequest.setPageInfo(paging);
    
    	     return CustomerService.getService().searchAccounts(searchAccountsRequest).getAccounts();
    	 }
    
    	 // Outputs the account and parent customer identifiers for the specified accounts.
    
    	 static void printAccounts(ArrayOfAdvertiserAccount accounts) throws Exception
    	 {
    	     for (Account account : accounts.getAccounts())
    	     {
    	     	System.out.printf("AccountId: %d\n", account.getId());
    	     	System.out.printf("CustomerId: %d\n", account.getParentCustomerId());
    	     }
    	 }
     %>
    
    <%
    	// Main execution  
    
      try {
    
          	OAuthWebAuthCodeGrant oAuthWebAuthCodeGrant = new OAuthWebAuthCodeGrant(
    			ClientId, 
    			ClientSecret, 
    			new URL(RedirectUri)
            );
    
          	oAuthWebAuthCodeGrant.setNewTokensListener(new NewOAuthTokensReceivedListener() {
                @Override
                public void onNewOAuthTokensReceived(OAuthTokens newTokens) {
                       java.lang.String newAccessToken = newTokens.getAccessToken();
                       java.lang.String newRefreshToken = newTokens.getRefreshToken();
                       java.lang.String refreshTime = new java.text.SimpleDateFormat(
                    		   "MM/dd/yyyy HH:mm:ss").format(new java.util.Date());
    
                       System.out.printf("Token refresh time: %s\n", refreshTime);
                       System.out.printf("New access token: %s\n", newAccessToken);
                       System.out.printf("You should securely store this new refresh token: %s\n", newRefreshToken);
    
                }
            });
    
          	if (authorizationData == null) {
              	if (request.getParameter("code") == null) {				
    				URL authorizationUrl = oAuthWebAuthCodeGrant.getAuthorizationEndpoint();
    				response.sendRedirect(authorizationUrl.toString());
    				return;
    			} else {		
    				OAuthTokens tokens = oAuthWebAuthCodeGrant.requestAccessAndRefreshTokens(
    					new URL(request.getRequestURL() + "?" + request.getQueryString()));
    
    				authorizationData = new AuthorizationData();
    				authorizationData.setDeveloperToken(DeveloperToken);
    				authorizationData.setAuthentication(oAuthWebAuthCodeGrant);
    			}
    		}
    
    		CustomerService = new ServiceClient<ICustomerManagementService>(
    			authorizationData, 
    			ICustomerManagementService.class);
    
    		User user = getUser(null);
    
          // Search for the accounts that the user can access.
    
          ArrayOfAdvertiserAccount accounts = searchAccountsByUserId(user.getId());
          accountsCount = accounts.getAccounts().size();
    
          System.out.println("The user can access the following Microsoft Advertising accounts: \n");
          printAccounts(accounts);
    
    	// Customer Management service operations can throw AdApiFaultDetail.
        } catch (AdApiFaultDetail_Exception ex) {
            System.out.println("The operation failed with the following faults:\n");
    
            for (AdApiError error : ex.getFaultInfo().getErrors().getAdApiErrors())
            {
                System.out.printf("AdApiError\n");
                System.out.printf("Code: %d\nError Code: %s\nMessage: %s\n\n", 
                    error.getCode(), error.getErrorCode(), error.getMessage()
                );
            }
    
        // Customer Management service operations can throw ApiFault.
        } catch (ApiFault_Exception ex) {
            System.out.println("The operation failed with the following faults:\n");
    
            for (OperationError error : ex.getFaultInfo().getOperationErrors().getOperationErrors())
            {
                System.out.printf("OperationError\n");
                System.out.printf("Code: %d\nMessage: %s\n\n", 
                    error.getCode(), error.getMessage()
                );
            }
        } catch (Exception ex) {
            // Ignore fault exceptions that we already caught.
    
            if (ex.getCause() instanceof AdApiFaultDetail_Exception ||
                ex.getCause() instanceof ApiFault_Exception )
            {
                ;
            }
            else
            {
                System.out.println("Error encountered: ");
                System.out.println(ex.getMessage());
                ex.printStackTrace();
            }
        }	
    %>
    
    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <title>Microsoft Advertising Web Application Example</title>
        <link rel="stylesheet" href="styles/styles.css" type="text/css" media="screen">
    </head>
    <body>
        <div id="content" class="container">
        	<div>
        		<br/>   		    		
        		<b>You have <%= accountsCount %> accounts</b>    		
    
        	</div> 
        </div>
    </body>
    </html>
    
  12. L’application est prête à être déployée sur un serveur. Par exemple, vous pouvez publier une application web à l’aide de la Azure App Service. Pour plus d’informations, consultez Déploiement d’une application web. Lorsque vous démarrez l’application, vous êtes invité par défaut à fournir les informations d’identification du compte Microsoft à authentifier en production.

Déploiement d’une application web

Si vous utilisez Microsoft Azure pour déployer votre application web, les éléments suivants sont requis.

  • Distribution d’un serveur web ou d’un serveur d’applications Java, tel qu’Apache Tomcat, GlassFish, JBoss Application Server, Jetty ou IBM® WebSphere® Application Server Liberty Core.

  • Un abonnement Azure, qui peut être acquis auprès de https://azure.microsoft.com/pricing/purchase-options/.

  • Si vous le souhaitez, vous pouvez installer le kit de ressources Azure pour Eclipse (par Microsoft Open Technologies) et déployer votre application web à l’aide des services cloud Azure. Pour plus d’informations, consultez Installation du kit de ressources Azure pour Eclipse.

Voir aussi

Bac à sable
Exemples de code de l’API Bing Ads
Adresses du service web de l’API Bing Ads