Hãy làm theo các bước trong hướng dẫn bắt đầu nhanh này và sau khoảng 10 phút, bạn sẽ một ứng dụng dòng lệnh Java đơn giản giúp đưa ra các yêu cầu đến thiết bị tự động đăng ký API khách hàng bằng tài khoản dịch vụ.
Điều kiện tiên quyết
Để chạy hướng dẫn nhanh này, bạn cần:
- Tài khoản dịch vụ được liên kết với khách hàng thiết lập tự động của bạn tài khoản. Xem phần Tải đã bắt đầu.
- Java 1.7 trở lên.
- Gradle 2.3 trở lên.
- Có quyền truy cập Internet và trình duyệt web.
Bước 1: Bật API đăng ký không tiếp xúc
- Sử dụng này để tạo hoặc chọn dự án trong Google Developers Console và tự động bật API. Nhấp vào Tiếp tục, sau đó nhấp vào Chuyển đến phần thông tin đăng nhập .
- Đặt mục Bạn sẽ truy cập dữ liệu nào? thành Dữ liệu ứng dụng.
- Nhấp vào Tiếp theo. Bạn sẽ được nhắc tạo một dịch vụ tài khoản.
- Đặt tên mô tả cho Tên tài khoản dịch vụ.
- Hãy ghi lại Mã tài khoản dịch vụ (có dạng như địa chỉ email) vì bạn sẽ sử dụng mã này sau.
- Đặt Vai trò thành Tài khoản dịch vụ > Người dùng tài khoản dịch vụ.
- Nhấp vào Xong để hoàn tất việc tạo tài khoản dịch vụ.
- Nhấp vào địa chỉ email của tài khoản dịch vụ bạn đã tạo.
- Nhấp vào **Khoá**.
- Nhấp vào **Thêm khoá**, rồi nhấp vào **Tạo khoá mới**.
- Đối với **Loại khoá**, hãy chọn **JSON**.
- Nhấp vào Tạo để tải khoá riêng tư xuống máy tính.
- Nhấp vào **Đóng**.
- Di chuyển tệp vào thư mục đang làm việc rồi đổi tên tệp
service_account_key.json
.
Bước 2: Chuẩn bị dự án
Hãy làm theo các bước bên dưới để thiết lập dự án Gradle của bạn:
Chạy lệnh sau để tạo một dự án mới trong thư mục đang làm việc:
gradle init --type basic mkdir -p src/main/java src/main/resources
Sao chép
service_account_key.json
mà bạn đã tải xuống khi tạo tài khoản dịch vụ này vào thư mụcsrc/main/resources/
mà bạn đã tạo ở trên.Mở tệp
build.gradle
mặc định rồi thay nội dung của tệp đó bằng mã sau:
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.auth:google-auth-library-oauth2-http:1.16.1' compile 'com.google.auth:google-auth-library-credentials:1.16.1' compile 'com.google.http-client:google-http-client:1.43.1' compile 'com.google.oauth-client:google-oauth-client-jetty:1.34.1' }
Bước 3: Thiết lập mẫu
Tạo một tệp có tên src/main/java/CustomerQuickstart.java
, sao chép mã sau rồi lưu tệp.
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpRequestInitializer; 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.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 com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; import com.google.auth.oauth2.ServiceAccountCredentials; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.List; /** This class forms the quickstart introduction to the zero-touch enrollment 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"; // Global shared instances private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); private static HttpTransport HTTP_TRANSPORT; static { try { HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); } catch (Throwable t) { t.printStackTrace(); System.exit(1); } } /** * Creates a GoogleCredentials 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 GoogleCredentials object. * @throws IOException */ public static GoogleCredentials authorize() throws IOException { // Load service account key. InputStream in = CustomerQuickstart.class.getResourceAsStream("/service_account_key.json"); // Create the credential scoped to the zero-touch enrollment customer APIs. GoogleCredentials credential = ServiceAccountCredentials.fromStream(in).createScoped(SCOPES); 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 { GoogleCredentials credential = authorize(); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credential); return new AndroidProvisioningPartner.Builder(HTTP_TRANSPORT, JSON_FACTORY, requestInitializer) .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()); } } }
Bước 4: Chạy mẫu
Sử dụng phần trợ giúp của hệ điều hành để chạy tập lệnh trong tệp. Trên UNIX và Mac máy tính, hãy chạy lệnh bên dưới trong cửa sổ dòng lệnh của bạn:
gradle -q run
Ghi chú
- Tránh chia sẻ tệp
service_account_key.json
của bạn với bất kỳ ai. Luôn thận trọng không bao gồm mã này trong kho lưu trữ mã nguồn. Bạn có thể đọc thêm lời khuyên về xử lý bí mật tài khoản dịch vụ.