Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Java-Beispielwebanwendung fordert den Benutzer über die von Ihnen angegebenen Anmeldeinformationen zur Zustimmung auf und ruft dann die Konten ab, auf die der authentifizierte Benutzer zugreifen kann.
Sie müssen zuerst eine Anwendung registrieren und sich die Client-ID (registrierte Anwendungs-ID), den geheimen Clientschlüssel (registriertes Kennwort) und den Umleitungs-URI notieren. Weitere Informationen zum Registrieren einer Anwendung und zum Autorisierungscodegewährungsfluss finden Sie unter Authentifizierung mit OAuth.
Sie benötigen auch Ihr Produktionsentwicklertoken. Sie können das Beispiel wie unten beschrieben Schritt für Schritt erstellen oder weitere Beispiele von GitHub herunterladen.
Hinweis
Dieses Beispiel veranschaulicht die OAuth-Authentifizierung in der Produktion. Informationen zum Konfigurieren der Sandbox finden Sie unter Konfigurieren der Sandbox.
Beispiel für die Authentifizierung von Webanwendungen Walk-Through
Öffnen Sie die Eclipse-Entwicklungsumgebung.
Erstellen Sie ein neues Projekt über Datei ->Neues>-Projekt ->Maven ->Maven-Projekt und klicken Sie auf Weiter.
Stellen Sie im Dialogfeld Neues Maven-Projekt sicher, dass die Option Ein einfaches Projekt erstellen (Auswahl des Archetyps überspringen) nicht ausgewählt ist, und klicken Sie auf Weiter. Im nächsten Schritt wählen Sie einen Maven-Archetyp aus.
Wählen Sie im Dialogfeld Neues Maven-Projekt den Maven-Web-App-Archetyp aus und klicken Sie auf Weiter. Die Gruppen-ID lautet org.apache.maven.archetypes und die Artefakt-ID ist maven-archetype-webapp.
Geben Sie im Dialogfeld Neues Maven-Projekt die Artefaktparameter Ihres Projekts an, und klicken Sie dann auf Fertig stellen. Beispielsweise können Sie die Gruppen-ID auf com.microsoft.bingads.examples und die Artefakt-ID auf BingAdsWebApp festlegen.
Fügen Sie die erforderlichen Javax-Servlet-JARs zu Ihrer Projektbibliothek hinzu, wenn sie sich nicht bereits in Ihrem Java-Buildpfad befinden. Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf das Projekt BingAdsWebApp, und klicken Sie auf Eigenschaften. Gehen Sie im Dialogfeld Eigenschaften zur Registerkarte Java-Build-Pfad ->Bibliotheken , klicken Sie auf Externe JARs hinzufügen und navigieren Sie dann zu {EclipseInstallationPath}/plugins/ und wählen Sie z. B. sowohl javax.servlet.jsp_2.2.0.v201112011158 als auch javax.servlet_3.0.0.v201112011016 aus.
Fügen Sie die Servlet-JARs in die Reihenfolge des Projekts und die exportierten Einträge ein. Klicken Sie auf der Registerkarte Java-Buildpfad -Reihenfolge und Export auf Alle auswählen (wählen Sie mindestens die Servlet-JARs> aus) und klicken Sie dann auf Fertig stellen.
Fügen Sie die Servlet-JARs in die Web Deployment Assembly des Projekts ein. Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf das BingAdsWebApp-Projekt, und wählen Sie Eigenschaften aus. Wechseln Sie im Dialogfeld Eigenschaften zu Deployment Assembly ->Add, wählen Sie Java-Buildpfadeinträge und klicken Sie auf Weiter. Wählen Sie alle JARs aus, die Sie in den vorherigen Schritten hinzugefügt haben, klicken Sie im Dialogfeld Neue Assemblydirektive auf Fertig stellen und dann im Dialogfeld Eigenschaften auf Übernehmen.
Klicken Sie in Project Explorer mit der rechten Maustaste auf die Datei pom.xml und wählen Sie Öffnen mit ->Text-Editor. Fügen Sie die Abhängigkeit com.microsoft.bingads hinzu, wie im folgenden Beispiel gezeigt, und speichern Sie pom.xml.
Hinweis
Ausführliche Informationen zur neuesten Version der SDK-Abhängigkeit finden Sie im Bing Ads Java SDK GitHub README.md.
<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>Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf den Webinhaltsordner Ihres BingAdsWebApp-Projekts und wählen Sie Neu ->JSP-Datei. Benennen Sie die Datei index.jsp und klicken Sie dann auf Fertig stellen.
Öffne die Index.jsp Datei und ersetze ihren Inhalt durch den folgenden Codeblock. Sie müssen das folgende Beispiel mit der ClientId, dem ClientSecret und dem RedirectionUri bearbeiten, die beim Registrieren Ihrer Anwendung bereitgestellt wurden. Sie müssen das Beispiel auch mit Ihrem Produktionsentwicklertoken bearbeiten. Wenn Sie Sandbox verwenden, müssen Sie die Schritte unter Konfigurieren von Sandbox ausführen.
<%@ 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>Die Anwendung ist bereit für die Bereitstellung auf einem Server. Beispielsweise können Sie eine Web-App mithilfe von Azure App Service veröffentlichen. Weitere Informationen finden Sie unter Webanwendung bereitstellen. Wenn Sie die Anwendung starten, werden Sie standardmäßig aufgefordert, die Microsoft-Kontoanmeldeinformationen für die Authentifizierung in der Produktion anzugeben.
Bereitstellen einer Webanwendung
Wenn Sie Microsoft Azure zum Bereitstellen Ihrer Webanwendung verwenden, sind folgende Voraussetzungen erforderlich.
Eine Verteilung eines Java-basierten Webservers oder Anwendungsservers, wie Apache Tomcat, GlassFish, JBoss Application Server, Jetty oder IBM® WebSphere® Application Server Liberty Core.
Ein Azure-Abonnement, das erworben werden kann von https://azure.microsoft.com/pricing/purchase-options/.
Optional können Sie das Azure Toolkit for Eclipse (von Microsoft Open Technologies) installieren und Ihre Webanwendung mithilfe von Azure-Clouddiensten bereitstellen. Weitere Informationen finden Sie unter Installieren des Azure-Toolkits für Eclipse.
Siehe auch
Sandbox
Bing Ads API-Codebeispiele
Bing Ads API-Webdienstadressen