Java-Kurzanleitung für Kunden

Folgen Sie den Schritten in dieser Kurzanleitung. In etwa 10 Minuten haben Sie eine einfache Java-Befehlszeilenanwendung, die Anfragen an die Kunden-API für die Zero-Touch-Registrierung sendet.

Vorbereitung

Für diese Kurzanleitung benötigen Sie Folgendes:

  • Ein Google-Konto, das Mitglied Ihres Kundenkontos für die Zero-Touch-Registrierung ist. Weitere Informationen finden Sie unter Einstieg.
  • Java 1.7 oder höher
  • Gradle 2.3 oder höher
  • Zugriff auf das Internet und einen Webbrowser

Schritt 1: Zero-Touch-Registrierungs-API aktivieren

  1. Verwenden Sie diesen Assistenten, um in der Google Developers Console ein Projekt zu erstellen oder auszuwählen und die API automatisch zu aktivieren. Klicken Sie auf Weiter und dann auf Zu den Anmeldedaten.
  2. Klicken Sie auf der Seite „Anmeldedaten erstellen“ auf Abbrechen.
  3. Klicken Sie oben auf der Seite auf den Tab OAuth-Zustimmungsbildschirm. Wählen Sie eine E-Mail-Adresse aus, geben Sie einen Produktnamen ein, falls noch nicht geschehen, und klicken Sie auf die Schaltfläche Speichern.
  4. Wählen Sie den Tab Anmeldedaten aus, klicken Sie auf die Schaltfläche Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.
  5. Wählen Sie den Anwendungstyp Andere aus, geben Sie den Namen „Quickstart“ ein und klicken Sie auf die Schaltfläche Erstellen.
  6. Klicken Sie auf OK, um das Steuerfeld OAuth-Client zu schließen.
  7. Klicken Sie auf  JSON herunterladen.
  8. Verschieben Sie die Datei in Ihr Arbeitsverzeichnis und benennen Sie sie in client_secret.json um.

Schritt 2: Projekt vorbereiten

So richten Sie Ihr Gradle-Projekt ein:

  1. Führen Sie den folgenden Befehl aus, um ein neues Projekt im Arbeitsverzeichnis zu erstellen:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources
    
  2. Kopieren Sie die Datei client_secret.json, die Sie in Schritt 1 heruntergeladen haben, in das Verzeichnis src/main/resources/, das Sie oben erstellt haben.

  3. Öffnen Sie die Standarddatei build.gradle und ersetzen Sie den Inhalt durch den folgenden Code:

apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'CustomerQuickstart'
sourceCompatibility = 1.7
targetCompatibility = 1.7
version = '1.0'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.api-client:google-api-client:2.2.0'
    compile 'com.google.apis:google-api-services-androiddeviceprovisioning:v1-rev20230509-2.0.0'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.34.1'
}

Schritt 3: Beispiel einrichten

Erstellen Sie eine Datei mit dem Namen src/main/java/CustomerQuickstart.java, kopieren Sie den folgenden Code und speichern Sie die Datei.

import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
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.gson.GsonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
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.CustomerListCustomersResponse;
import com.google.api.services.androiddeviceprovisioning.v1.model.CustomerListDpcsResponse;
import com.google.api.services.androiddeviceprovisioning.v1.model.Dpc;
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 customer API. */
public class CustomerQuickstart {

  // A single auth scope is used for the zero-touch enrollment customer API.
  private static final List<String> SCOPES =
      Arrays.asList("https://www.googleapis.com/auth/androidworkzerotouchemm");
  private static final String APP_NAME = "Zero-touch Enrollment Java Quickstart";
  private static final java.io.File DATA_STORE_DIR =
      new java.io.File(System.getProperty("user.home"), ".credentials/zero-touch.quickstart.json");

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

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

  /**
   * Creates a Credential object with the correct OAuth2 authorization for the user calling the
   * customer 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 client secrets.
    InputStream in = CustomerQuickstart.class.getResourceAsStream("/client_secret.json");

    GoogleClientSecrets clientSecrets =
        GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in, "UTF-8"));

    // Ask the user to authorize the request using their Google Account
    // in their browser.
    GoogleAuthorizationCodeFlow flow =
        new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
            .setDataStoreFactory(DATA_STORE_FACTORY)
            .setAccessType("offline")
            .build();
    Credential credential =
        new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
    System.out.println("Credential file saved to: " + DATA_STORE_DIR.getAbsolutePath());
    return credential;
  }

  /**
   * Build and return 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();

    // Get the customer's account. Because a customer might have more
    // than one, limit the results to the first account found.
    AndroidProvisioningPartner.Customers.List accountRequest = service.customers().list();
    accountRequest.setPageSize(1);
    CustomerListCustomersResponse accountResponse = accountRequest.execute();
    if (accountResponse.getCustomers().isEmpty()) {
      // No accounts found for the user. Confirm the Google Account
      // that authorizes the request can access the zero-touch portal.
      System.out.println("No zero-touch enrollment account found.");
      System.exit(-1);
    }
    Company customer = accountResponse.getCustomers().get(0);
    String customerAccount = customer.getName();

    // Send an API request to list all the DPCs available using the customer account.
    AndroidProvisioningPartner.Customers.Dpcs.List request =
        service.customers().dpcs().list(customerAccount);
    CustomerListDpcsResponse response = request.execute();

    // Print out the details of each DPC.
    java.util.List<Dpc> dpcs = response.getDpcs();
    for (Dpc dpcApp : dpcs) {
      System.out.format("Name:%s  APK:%s\n", dpcApp.getDpcName(), dpcApp.getPackageName());
    }
  }
}

Schritt 4: Beispiel ausführen

Lesen Sie in der Hilfe Ihres Betriebssystems nach, wie Sie das Script in der Datei ausführen. Führen Sie auf UNIX- und Mac-Computern den folgenden Befehl im Terminal aus:

gradle -q run

Wenn Sie die App zum ersten Mal ausführen, müssen Sie den Zugriff autorisieren:

  1. Die App versucht, einen neuen Tab in Ihrem Standardbrowser zu öffnen. Wenn das nicht funktioniert, kopieren Sie die URL aus der Konsole und öffnen Sie sie in Ihrem Browser. Wenn Sie noch nicht in Ihrem Google-Konto angemeldet sind, werden Sie aufgefordert, sich anzumelden. Wenn Sie in mehreren Google-Konten angemeldet sind, werden Sie auf der Seite aufgefordert, ein Konto für die Autorisierung auszuwählen.
  2. Klicken Sie auf Akzeptieren.
  3. Schließen Sie den Browsertab. Die App wird weiter ausgeführt.

Hinweise

  • Da die Google API-Clientbibliothek Autorisierungsdaten im Dateisystem speichert, werden Sie bei nachfolgenden Starts nicht zur Autorisierung aufgefordert.
  • Löschen Sie die Datei ~/.credentials/zero-touch.quickstart.json und führen Sie die App noch einmal aus, um die Autorisierungsdaten der App zurückzusetzen.
  • Der Autorisierungsablauf in dieser Kurzanleitung eignet sich ideal für eine Befehlszeilen-App. Informationen zum Hinzufügen einer Autorisierung zu einer Webanwendung finden Sie unter OAuth 2.0-Webserveranwendungen.

Fehlerbehebung

Hier sind einige häufige Probleme, die Sie prüfen sollten. Teilen Sie uns mit, was bei der Schnellstartanleitung nicht funktioniert hat. Wir werden dann versuchen, das Problem zu beheben.

  • Prüfen Sie, ob Sie API-Aufrufe mit demselben Google-Konto autorisieren, das zu Ihrem Kundenkonto für die Zero-Touch-Registrierung gehört. Melden Sie sich mit demselben Google-Konto im Portal für die kontaktlose Registrierung an, um Ihren Zugriff zu testen.
  • Prüfen Sie, ob das Konto die aktuellen Nutzungsbedingungen im Portal akzeptiert hat. Weitere Informationen finden Sie unter Kundenkonten.

Weitere Informationen