經銷商適用的 Java 快速入門導覽課程
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
請按照本快速入門指南內的步驟操作,大約 10 分鐘後,您會擁有簡易的 Java 指令列應用程式,可向零接觸註冊經銷商 API 提出要求。
必要條件
如要執行這個快速入門,您需要:
步驟 1:啟用零接觸註冊機制 API
- 請使用這個精靈在 Google Developers Console 中建立或選取專案,並自動啟用 API。依序點選「繼續」和「前往憑證」。
- 將「您需要存取什麼資料?」設為「應用程式資料」。
- 按一下「繼續」,系統會提示您建立服務帳戶。
- 在「Service account name」(服務帳戶名稱) 中輸入描述性名稱。
- 請記下服務帳戶 ID (看起來像電子郵件地址),因為您稍後會用到這個 ID。
- 將「角色」設為「服務帳戶」>「服務帳戶使用者」。
- 按一下「Done」(完成),即完成建立服務帳戶。
- 按一下您建立的服務帳戶電子郵件地址。
- 按一下「金鑰」。
- 依序按一下「新增金鑰」和「建立新的金鑰」。
- 在「金鑰類型」中選取「JSON」。
- 按一下「Create」,私密金鑰就會下載到電腦中。
- 按一下「關閉」。**
- 將檔案移至工作目錄,並將其重新命名為
service_account_key.json
。
步驟 2:連結服務帳戶
- 開啟零接觸註冊機制入口網站。您可能需要登入。
- 按一下 settings_ethernet「Service accounts」。
- 按一下 add「連結服務帳戶」。
- 將「電子郵件地址」設為您建立的服務帳戶地址。
- 按一下「連結服務帳戶」,即可使用服務帳戶和零接觸註冊帳戶。
步驟 3:準備專案
請按照下列步驟設定 Gradle 專案:
執行下列指令,在工作目錄中建立新專案:
gradle init --type basic
mkdir -p src/main/java src/main/resources
將您在步驟 1 下載的 service_account_key.json
檔案複製到上述建立的 src/main/resources/
目錄中。
開啟預設的 build.gradle
檔案,然後將內容替換為下列程式碼:
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:+'
}
步驟 4:設定範例
建立名為 src/main/java/ResellerQuickstart.java
的檔案,然後複製下列程式碼並儲存檔案。插入您自己的經銷商合作夥伴 ID,做為 PARTNER_ID
(應用程式的第一行) 的值。
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
API 呼叫通常需要經銷商合作夥伴 ID 做為引數。如要從零接觸註冊機制入口網站找出合作夥伴 ID,請按照下列步驟操作:
- 開啟入口網站,您可能需要登入。
- 按一下 settings_ethernet「Service Accounts」。
- 複製「你的經銷商 ID」行中的合作夥伴 ID 編號。
步驟 5:執行範例
請使用作業系統的說明,執行檔案中的指令碼。在 UNIX 和 Mac 電腦上,請在終端機中執行下列指令:
gradle -q run
疑難排解
請告訴我們快速入門課程有哪些錯誤,我們會盡力修正。如想瞭解零接觸機制如何使用服務帳戶授權 API 呼叫,請參閱「授權」。
瞭解詳情
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-29 (世界標準時間)。
[null,null,["上次更新時間:2025-08-29 (世界標準時間)。"],[[["\u003cp\u003eThis guide walks you through setting up a simple Java command-line application that interacts with the zero-touch enrollment reseller API in approximately 10 minutes.\u003c/p\u003e\n"],["\u003cp\u003eTo begin, you'll need a Google account within your zero-touch enrollment reseller account, Java 1.7 or later, Gradle 2.3 or later, and internet access.\u003c/p\u003e\n"],["\u003cp\u003eThe process involves turning on the zero-touch enrollment API, creating and linking a service account within the portal, and downloading a JSON key for authentication.\u003c/p\u003e\n"],["\u003cp\u003eYou'll then prepare a Gradle project, copy the service account key, set up the sample Java code with your reseller partner ID, and finally run the application using a simple command.\u003c/p\u003e\n"],["\u003cp\u003eThe code when run will list all customers associated with your reseller partner id.\u003c/p\u003e\n"]]],["First, enable the zero-touch enrollment API and create a service account, noting its ID and downloading its JSON key. Link this service account in the zero-touch portal. Next, set up a Gradle project, placing the downloaded key in the `src/main/resources/` directory and modify the `build.gradle` file. Then create `ResellerQuickstart.java`, replacing the placeholder `PARTNER_ID` with your actual reseller partner ID. Finally, execute the project using the `gradle -q run` command.\n"],null,["# Java quickstart for resellers\n\nFollow the steps in this quickstart guide, and in about 10 minutes you'll have\na simple Java command-line app that makes requests to the zero-touch\nenrollment reseller API.\n\nPrerequisites\n-------------\n\nTo run this quickstart, you'll need:\n\n- A Google account, that's a member of your zero-touch enrollment reseller account. If you haven't onboarded yet, follow the steps in *Get started* in the [Reseller portal guide](/zero-touch/guides/portal).\n- Java 1.7 or greater.\n- [Gradle 2.3 or greater](http://gradle.org/downloads).\n- Access to the internet and a web browser.\n\nStep 1: Turn on the zero-touch enrollment API\n---------------------------------------------\n\n1. Use [this\n wizard](https://console.developers.google.com/start/api?id=androiddeviceprovisioning.googleapis.com) to create or select a project in the Google Developers Console and automatically turn on the API. Click **Continue** , then **Go to credentials**.\n2. Set **What data will you be accessing?** to *Application data*.\n3. Click **Next**. You should be prompted to create a service account.\n4. Give a descriptive name for **Service account name**.\n5. Note the **Service account ID** (it looks like an email address) because you'll use it later.\n6. Set **Role** to *Service Accounts \\\u003e Service Account User*.\n7. Click **Done** to finish creating the service account.\n8. Click the email address for the service account that you created.\n9. Click \\*\\*Keys\\*\\*.\n10. Click \\*\\*Add key\\*\\*, then click \\*\\*Create new key\\*\\*.\n11. For \\*\\*Key type\\*\\*, select \\*\\*JSON\\*\\*.\n12. Click **Create** and the private key downloads to your computer.\n13. Click \\*\\*Close\\*\\*.\n14. Move the file to your working directory and rename it `service_account_key.json`.\n\n| **Warning:** Service account keys can become a security risk if not managed carefully. For advice see [best practices for managing API keys](https://cloud.google.com/iam/docs/best-practices-for-managing-service-account-keys).\n\nStep 2: Link the service account\n--------------------------------\n\n1. Open the zero-touch enrollment [portal](https://enterprise.google.com/android/zero-touch/resellers). You might need to sign in.\n2. Click settings_ethernet **Service\n accounts**.\n3. Click add **Link service account**.\n4. Set **Email address** to the address of the service account you created.\n5. Click **Link service account** to use the service account with your zero-touch enrollment account.\n\nStep 3: Prepare the project\n---------------------------\n\nFollow the steps below to set up your Gradle project:\n\n1. Run the following command to create a new project in the working directory:\n\n gradle init --type basic\n mkdir -p src/main/java src/main/resources\n\n2. Copy the `service_account_key.json` file you downloaded in Step 1 into the\n `src/main/resources/` directory you created above.\n\n3. Open the default `build.gradle` file and replace its contents with the\n following code:\n\n apply plugin: 'java'\n apply plugin: 'application'\n\n mainClassName = 'ResellerQuickstart'\n sourceCompatibility = 1.7\n targetCompatibility = 1.7\n version = '1.0'\n\n repositories {\n mavenCentral()\n }\n\n dependencies {\n compile 'com.google.api-client:google-api-client:1.30.11'\n compile 'com.google.apis:google-api-services-androiddeviceprovisioning:+'\n compile 'com.google.oauth-client:google-oauth-client-jetty:+'\n }\n\nStep 4: Set up the sample\n-------------------------\n\nCreate a file named `src/main/java/ResellerQuickstart.java` and copy in the\nfollowing code and save the file. Insert your own [reseller partner\nID](#partner-id) as the value for `PARTNER_ID` (the app's first line). \n\n```java\nimport com.google.api.client.auth.oauth2.Credential;\nimport com.google.api.client.googleapis.auth.oauth2.GoogleCredential;\nimport com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;\nimport com.google.api.client.http.HttpTransport;\nimport com.google.api.client.json.JsonFactory;\nimport com.google.api.client.json.jackson2.JacksonFactory;\nimport com.google.api.services.androiddeviceprovisioning.v1.AndroidProvisioningPartner;\nimport com.google.api.services.androiddeviceprovisioning.v1.model.Company;\nimport com.google.api.services.androiddeviceprovisioning.v1.model.ListCustomersResponse;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.util.Arrays;\nimport java.util.List;\n\n/**\n * This class forms the quickstart introduction to the zero-touch enrollemnt\n * reseller API.\n */\npublic class ResellerQuickstart {\n\n // TODO: replace this with your partner reseller ID.\n private static long PARTNER_ID = 11036885;\n\n // Use a single scope for the all methods in the reseller API.\n private static final List\u003cString\u003e SCOPES =\n Arrays.asList(\"https://www.googleapis.com/auth/androidworkprovisioning\");\n private static final String APP_NAME = \"Zero-touch Reseller Java Quickstart\";\n\n // Global shared instances.\n private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();\n private static HttpTransport HTTP_TRANSPORT;\n\n static {\n try {\n HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();\n } catch (Throwable t) {\n t.printStackTrace();\n System.exit(1);\n }\n }\n\n /**\n * Creates a Credential object with the correct OAuth2 authorization\n * for the service account that calls the reseller API. The service\n * endpoint invokes this method when setting up a new service instance.\n * @return an authorized Credential object.\n * @throws IOException\n */\n public static Credential authorize() throws IOException {\n // Load the service account key from the JSON file.\n InputStream in =\n ResellerQuickstart.class.getResourceAsStream(\"/service_account_key.json\");\n\n // Create the credential scoped to the zero-touch enrollemnt\n // reseller APIs.\n GoogleCredential credential = GoogleCredential\n .fromStream(in)\n .createScoped(SCOPES);\n return credential;\n }\n\n /**\n * Builds and returns an authorized zero-touch enrollment API client service.\n * Use the service endpoint to call the API methods.\n * @return an authorized client service endpoint\n * @throws IOException\n */\n public static AndroidProvisioningPartner getService() throws IOException {\n Credential credential = authorize();\n return new AndroidProvisioningPartner.Builder(\n HTTP_TRANSPORT, JSON_FACTORY, credential)\n .setApplicationName(APP_NAME)\n .build();\n }\n\n /**\n * Runs the zero-touch enrollment quickstart app.\n * @throws IOException\n */\n public static void main(String[] args) throws IOException {\n\n // Create a zero-touch enrollment API service endpoint.\n AndroidProvisioningPartner service = getService();\n\n // Send an API request to list all our customers.\n AndroidProvisioningPartner.Partners.Customers.List request =\n service.partners().customers().list(PARTNER_ID);\n ListCustomersResponse response = request.execute();\n\n // Print out the details of each customer.\n if (response.getCustomers() != null) {\n java.util.List\u003cCompany\u003e customers = response.getCustomers();\n for (Company customer : customers) {\n System.out.format(\"Name:%s ID:%d\\n\",\n customer.getCompanyName(),\n customer.getCompanyId());\n }\n } else {\n System.out.println(\"No customers found\");\n }\n }\n}\n```\n\n### Partner ID\n\nAPI calls typically need your reseller partner ID as an argument. To find your\npartner ID from the zero-touch enrollment portal, follow the steps below:\n\n1. Open the [portal](https://enterprise.google.com/android/zero-touch/resellers). You might need to sign in.\n2. Click settings_ethernet **Service\n accounts**.\n3. Copy your partner ID number from the **Your reseller ID** line.\n\nStep 5: Run the sample\n----------------------\n\nUse your operating system's help to run the script in the file. On UNIX and Mac\ncomputers, run the command below in your terminal: \n\n gradle -q run\n\nTroubleshooting\n---------------\n\n\n[Tell us what went wrong]() with the quickstart and we'll work to\nfix it. To learn how zero-touch uses service accounts to authorize API calls, read\n[Authorization](/zero-touch/guides/auth).\n\nLearn more\n----------\n\n- [Google Developers Console help documentation](/console/help/new)\n- [Google APIs Client for Java documentation](/api-client-library/java)\n- [Google APIs Client Javadocs](/api-client-library/java/google-api-java-client/reference)"]]