Aracılığıyla paylaş


İzlenecek yol: Java'da Bing Ads API Web Uygulaması

Bu örnek Java web uygulaması, sağladığınız kimlik bilgileri aracılığıyla kullanıcı onayı ister ve ardından kimliği doğrulanmış kullanıcının erişebileceği hesapları alır.

Önce bir uygulamayı kaydetmeniz ve istemci kimliğini (kayıtlı uygulama kimliği), istemci gizli anahtarını (kayıtlı parola) ve yeniden yönlendirme URI'sini not almanız gerekir. Bir uygulamayı kaydetme ve yetkilendirme kodu verme akışı hakkında daha fazla bilgi için bkz. OAuth ile kimlik doğrulaması.

Ayrıca üretim geliştirici belirtecinize de ihtiyacınız olacaktır. Aşağıda açıklandığı gibi örneği adım adım oluşturabilir veya GitHub'dan daha fazla örnek indirebilirsiniz.

Not

Bu örnekte üretimde OAuth kimlik doğrulaması gösterilmektedir. Korumalı alanı yapılandırma hakkında bilgi için bkz. Korumalı Alanı Yapılandırma.

Web Uygulaması Kimlik Doğrulaması Örneği Walk-Through

  1. Eclipse geliştirme ortamını açın.

  2. Dosya -Yeni -Proje ->Maven ->>Maven>Projesi aracılığıyla yeni bir proje oluşturun ve İleri'ye tıklayın.

  3. Yeni Maven Projesi iletişim kutusunda Basit proje oluştur (arketip seçimini atla) seçeneğinin seçili olmadığından emin olun ve İleri'ye tıklayın. Sonraki adımda bir Maven arketipi seçersiniz.

  4. Yeni Maven Projesi iletişim kutusunda Maven web uygulaması arketipini seçin ve İleri'ye tıklayın. Grup Kimliği org.apache.maven.archetypes ve Yapıt Kimliği maven-archetype-webapp şeklindedir.

  5. Yeni Maven Projesi iletişim kutusunda projenizin yapıt parametrelerini belirtin ve son'a tıklayın. Örneğin, Grup Kimliği'ni com.microsoft.bingads.examples ve Yapıt Kimliği'ni BingAdsWebApp olarak ayarlayabilirsiniz.

  6. Gerekli javax servlet JAR'lerini, Henüz Java derleme yolunuzda değilse proje kitaplığınıza ekleyin. Proje Gezgini'nde BingAdsWebApp projesine sağ tıklayın ve Özellikler'e tıklayın. Özellikler iletişim kutusunda Java Derleme Yolu ->Kitaplıklar sekmesine gidin, Dış JAR Ekle'ye tıklayın ve ardından {EclipseInstallationPath}/plugins/ adresine gidin ve hem javax.servlet.jsp_2.2.0.v201120111158 hem de javax.servlet_3.0.0.v201112011016 öğesini seçin.

  7. Servlet JAR'lerini projenin siparişine ve dışarı aktarılan girişlere ekleyin. Java Derleme Yolu ->Sıra ve Dışarı Aktar sekmesinde Tümünü Seç'e tıklayın (en azından servlet JAR'lerini seçin) ve ardından Son'a tıklayın.

  8. Projenin Web Dağıtım Derlemesine servlet JAR'lerini ekleyin. Proje Gezgini'nde BingAdsWebApp projesine sağ tıklayın ve Özellikler'i seçin. Özellikler iletişim kutusunda Dağıtım Derlemesi ->Ekle'ye gidin, Java Derleme Yolu Girişleri'ni seçin ve İleri'ye tıklayın. Önceki adımlarda eklediğiniz tüm JAR'leri seçin, Yeni Derleme Yönergesi iletişim kutusunda Son'a tıklayın ve özellikler iletişim kutusundaUygula'ya tıklayın.

  9. Proje Gezgini'nde pom.xml dosyasına sağ tıklayın ve ->Metin Düzenleyicisiile Aç'ı seçin. Aşağıdaki örnekte gösterildiği gibi com.microsoft.bingads bağımlılığını ekleyin ve pom.xml kaydedin.

    Not

    En son SDK bağımlılık sürümü hakkında ayrıntılı bilgi için bkz. 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>
    
  10. Proje Gezgini'nde BingAdsWebApp projenizin Web İçeriği klasörüne sağ tıklayın ve Yeni ->JSPDosyası'nı seçin. dosyayı index.jsp olarak adlandırın ve Son'a tıklayın.

  11. Index.jsp dosyasını açın ve içeriğini aşağıdaki kod bloğuyla değiştirin. Uygulamanızı kaydettiğinizde sağlanan ClientId, ClientSecret ve RedirectionUri ile aşağıdaki örneği düzenlemeniz gerekir. Ayrıca örneği üretim geliştirici belirtecinizle düzenlemeniz gerekir. Korumalı alan kullanıyorsanız, Korumalı Alanı Yapılandırma'daki adımları izlemeniz gerekir.

    <%@ 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. Uygulama bir sunucuya dağıtılmaya hazırdır. Örneğin, Azure App Service kullanarak bir Web Uygulaması yayımlayabilirsiniz. Daha fazla bilgi için bkz. Web Uygulaması Dağıtma. Uygulamayı başlattığınızda, üretim ortamında kimlik doğrulaması için varsayılan olarak Microsoft hesabı kimlik bilgileri istenir.

Web Uygulaması Dağıtma

Web uygulamanızı dağıtmak için Microsoft Azure kullanıyorsanız, aşağıdakiler gereklidir.

  • Apache Tomcat, GlassFish, JBoss Application Server, Jetty veya IBM® WebSphere® Application Server Liberty Core gibi Java tabanlı bir web sunucusunun veya uygulama sunucusunun dağıtımı.

  • 'den https://azure.microsoft.com/pricing/purchase-options/alınabilen bir Azure aboneliği.

  • İsteğe bağlı olarak Azure Toolkit for Eclipse'i yükleyebilir (Microsoft Open Technologies tarafından) ve Azure bulut hizmetlerini kullanarak web uygulamanızı dağıtabilirsiniz. Daha fazla bilgi için bkz . Azure Toolkit for Eclipse'i Yükleme.

Ayrıca Bkz

Sandbox
Bing Ads API Kod Örnekleri
Bing Ads API Web Hizmeti Adresleri