Guía de inicio rápido de Java para revendedores

Sigue los pasos de esta guía de inicio rápido y, en unos 10 minutos, tendrás una aplicación de línea de comandos de Java simple que realiza solicitudes a la API de distribuidor de inscripción automática.

Requisitos previos

Para ejecutar esta guía de inicio rápido, necesitarás lo siguiente:

Paso 1: Activa la API de inscripción automática

  1. Usa este asistente para crear o seleccionar un proyecto en Google Developers Console y activar la API automáticamente. Haz clic en Continuar y, luego, en Ir a Credenciales.
  2. Configure ¿A qué datos accederá? en Datos de la aplicación.
  3. Haz clic en Siguiente. Se te solicitará que crees una cuenta de servicio.
  4. Proporciona un nombre descriptivo para el Nombre de la cuenta de servicio.
  5. Ten en cuenta el ID de la cuenta de servicio (parece una dirección de correo electrónico) porque lo usarás más tarde.
  6. Configura la Función como Cuentas de servicio > Usuario de cuentas de servicio.
  7. Haz clic en Listo para terminar de crear la cuenta de servicio.
  8. Haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
  9. Haz clic en **Keys**.
  10. Haz clic en **Agregar clave** y luego en **Crear clave nueva**.
  11. En **Tipo de clave**, selecciona **JSON**.
  12. Haga clic en Crear y la clave privada se descargará en su computadora.
  13. Haz clic en **Close**.
  14. Mueve el archivo a tu directorio de trabajo y cámbiale el nombre a service_account_key.json.
  1. Abra el portal de inscripción automática. Es posible que debas acceder.
  2. Haz clic en Cuentas de servicio.
  3. Haz clic en Vincular cuenta de servicio.
  4. Configura la opción Dirección de correo electrónico como la dirección de la cuenta de servicio que creaste.
  5. Haz clic en Vincular cuenta de servicio para usarla con tu cuenta de inscripción automática.

Paso 3: Prepara el proyecto

Sigue los pasos que se indican a continuación para configurar tu proyecto de Gradle:

  1. Ejecuta el siguiente comando para crear un proyecto nuevo en el directorio de trabajo:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources
    
  2. Copia el archivo service_account_key.json que descargaste en el Paso 1 en el directorio src/main/resources/ que creaste antes.

  3. Abre el archivo build.gradle predeterminado y reemplaza su contenido con el siguiente código:

    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'ResellerQuickstart'
    sourceCompatibility = 1.7
    targetCompatibility = 1.7
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile 'com.google.api-client:google-api-client:1.30.11'
        compile 'com.google.apis:google-api-services-androiddeviceprovisioning:+'
        compile 'com.google.oauth-client:google-oauth-client-jetty:+'
    }
    

Paso 4: Configura la muestra

Crea un archivo llamado src/main/java/ResellerQuickstart.java, cópialo en el siguiente código y guárdalo. Inserta tu propio ID de socio de distribuidor como el valor de PARTNER_ID (la primera línea de la app).

import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.androiddeviceprovisioning.v1.AndroidProvisioningPartner;
import com.google.api.services.androiddeviceprovisioning.v1.model.Company;
import com.google.api.services.androiddeviceprovisioning.v1.model.ListCustomersResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;

/**
 * This class forms the quickstart introduction to the zero-touch enrollemnt
 * reseller API.
 */
public class ResellerQuickstart {

  // TODO: replace this with your partner reseller ID.
  private static long PARTNER_ID = 11036885;

  // Use a single scope for the all methods in the reseller API.
  private static final List<String> SCOPES =
      Arrays.asList("https://www.googleapis.com/auth/androidworkprovisioning");
  private static final String APP_NAME = "Zero-touch Reseller Java Quickstart";

  // Global shared instances.
  private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
  private static HttpTransport HTTP_TRANSPORT;

  static {
    try {
      HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
    } catch (Throwable t) {
      t.printStackTrace();
      System.exit(1);
    }
  }

  /**
   * Creates a Credential object with the correct OAuth2 authorization
   * for the service account that calls the reseller API. The service
   * endpoint invokes this method when setting up a new service instance.
   * @return an authorized Credential object.
   * @throws IOException
   */
  public static Credential authorize() throws IOException {
      // Load the service account key from the JSON file.
      InputStream in =
          ResellerQuickstart.class.getResourceAsStream("/service_account_key.json");

      // Create the credential scoped to the zero-touch enrollemnt
      // reseller APIs.
      GoogleCredential credential = GoogleCredential
         .fromStream(in)
         .createScoped(SCOPES);
      return credential;
  }

  /**
   * Builds and returns an authorized zero-touch enrollment API client service.
   * Use the service endpoint to call the API methods.
   * @return an authorized client service endpoint
   * @throws IOException
   */
  public static AndroidProvisioningPartner getService() throws IOException {
    Credential credential = authorize();
    return new AndroidProvisioningPartner.Builder(
        HTTP_TRANSPORT, JSON_FACTORY, credential)
        .setApplicationName(APP_NAME)
        .build();
  }

  /**
   * Runs the zero-touch enrollment quickstart app.
   * @throws IOException
   */
  public static void main(String[] args) throws IOException {

    // Create a zero-touch enrollment API service endpoint.
    AndroidProvisioningPartner service = getService();

    // Send an API request to list all our customers.
    AndroidProvisioningPartner.Partners.Customers.List request =
          service.partners().customers().list(PARTNER_ID);
    ListCustomersResponse response = request.execute();

    // Print out the details of each customer.
    if (response.getCustomers() != null) {
      java.util.List<Company> customers = response.getCustomers();
      for (Company customer : customers) {
          System.out.format("Name:%s  ID:%d\n",
                customer.getCompanyName(),
                customer.getCompanyId());
      }
    } else {
      System.out.println("No customers found");
    }
  }
}

ID del socio

Las llamadas a la API normalmente necesitan tu ID de socio distribuidor como argumento. Para encontrar tu ID de socio en el portal de inscripción automática, sigue estos pasos:

  1. Abre el portal. Es posible que debas acceder.
  2. Haz clic en Cuentas de servicio .
  3. Copie su número de ID de socio desde la línea Su ID de distribuidor.

Paso 5: Ejecuta la muestra

Usa la ayuda de tu sistema operativo para ejecutar la secuencia de comandos en el archivo. En computadoras UNIX y Mac, ejecuta el siguiente comando en tu terminal:

gradle -q run

Solución de problemas

Cuéntanos cuál fue el problema con la guía de inicio rápido, y trabajaremos para solucionarlo. Para saber cómo la inscripción automática usa cuentas de servicio a fin de autorizar llamadas a la API, lee Autorización.

Más información