Java-Kurzanleitung für Kunden

Führen Sie die Schritte in dieser Kurzanleitung aus. In etwa 10 Minuten haben Sie eine einfache Java-Befehlszeilenanwendung, die Anfragen an die Zero-Touch-Registrierung sendet, Registration Customer API.

Vorbereitung

Zum Ausführen dieser Kurzanleitung benötigen Sie Folgendes:

  • Ein Google-Konto, das zu Ihrem Kunden für die Zero-Touch-Registrierung gehört Konto. Weitere Informationen finden Sie unter Get
  • Java 1.7 oder höher.
  • Gradle 2.3 oder höher.
  • Zugriff auf das Internet und einen Webbrowser.

Schritt 1: API für die Zero-Touch-Registrierung aktivieren

  1. Verwenden Sie diese , um ein Projekt in der Google Developers Console zu erstellen oder auszuwählen. die API automatisch aktivieren. Klicken Sie auf Weiter und dann auf Zu den Anmeldedaten.
  2. Klicken Sie unter „Anmeldedaten erstellen“ auf Abbrechen.
  3. Klicken Sie oben auf der Seite auf den Tab OAuth-Zustimmungsbildschirm. Wählen Sie ein E-Mail-Adresse, 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 und klicken Sie auf Anmeldedaten erstellen. und wählen Sie OAuth-Client-ID aus.
  5. Wählen Sie den Anwendungstyp Sonstige aus und geben Sie den Namen ein. „Schnellstart“ aus und klicken Sie auf das Symbol Erstellen Schaltfläche.
  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 richtest du dein Gradle-Projekt ein:

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

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

  3. Öffnen Sie die Standarddatei build.gradle und ersetzen Sie ihren Inhalt durch die 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 und kopieren Sie sie in den folgenden Code ausführen und die Datei speichern.

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

Führen Sie das Skript in der Datei mithilfe der Hilfe Ihres Betriebssystems aus. Unter UNIX und Mac , führen Sie den folgenden Befehl in Ihrem 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 dies fehlschlägt, kopieren Sie die URL aus der und öffnen Sie sie in Ihrem Browser. Wenn Sie noch nicht in Ihrem Google-Konto angemeldet sind, aufgefordert, sich anzumelden. Wenn Sie in mehreren Google-Konten angemeldet sind, werden Sie auf der Seite aufgefordert, ein Konto für die Autorisierung.
  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 nachfolgende keine Autorisierung erforderlich ist.
  • Um die Autorisierungsdaten der App zurückzusetzen, löschen Sie die ~/.credentials/zero-touch.quickstart.json-Datei und führen Sie die Anwendung noch einmal aus.
  • Der Autorisierungsvorgang in dieser Kurzanleitung ist ideal für eine Befehlszeilenanwendung. Weitere Informationen zum Hinzufügen Autorisierung einer Webanwendung, siehe OAuth 2.0-Webserveranwendungen

Fehlerbehebung

Hier sind einige Dinge, die Sie häufig überprüfen sollten. Teilen Sie uns mit, welches Problem bei der Kurzanleitung aufgetreten ist. Wir werden es dann beheben.

  • Prüfen Sie, ob Sie API-Aufrufe mit demselben Google-Konto autorisieren, das Mitglied Ihres Kundenkonto mit Zero-Touch-Registrierung. Versuchen Sie, sich über das Portal für die Zero-Touch-Registrierung über die Google-Konto, um Ihren Zugriff zu testen.
  • Bestätige, dass für das Konto die aktuellen Nutzungsbedingungen akzeptiert wurden. das Portal. Weitere Informationen finden Sie unter . Kundenkonten.

Weitere Informationen