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
- 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.
- Klicken Sie auf der Seite „Anmeldedaten erstellen“ auf Abbrechen.
- 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.
- Wählen Sie den Tab Anmeldedaten aus, klicken Sie auf die Schaltfläche Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.
- Wählen Sie den Anwendungstyp Andere aus, geben Sie den Namen „Quickstart“ ein und klicken Sie auf die Schaltfläche Erstellen.
- Klicken Sie auf OK, um das Steuerfeld OAuth-Client zu schließen.
- Klicken Sie auf JSON herunterladen.
- 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:
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
Kopieren Sie die Datei
client_secret.json
, die Sie in Schritt 1 heruntergeladen haben, in das Verzeichnissrc/main/resources/
, das Sie oben erstellt haben.Ö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:
- 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.
- Klicken Sie auf Akzeptieren.
- 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.