ใช้ Android Developer Status API เพื่อตรวจสอบว่าชื่อแพ็กเกจแอป Android ได้รับการลงทะเบียนกับนักพัฒนาแอปที่ผ่านการยืนยันแล้วหรือไม่ หากคุณสร้างเครื่องมือพัฒนาซอฟต์แวร์, IDE หรือเวิร์กโฟลว์ CI/CD อัตโนมัติ คุณสามารถผสานรวม API แบบเซิร์ฟเวอร์กับเซิร์ฟเวอร์นี้เพื่อทำสิ่งต่อไปนี้
- ตรวจสอบว่าชื่อแพ็กเกจแอปได้รับการลงทะเบียนกับนักพัฒนาแอปที่ผ่านการยืนยันแล้วหรือไม่
- ตรวจสอบว่าลายนิ้วมือ SHA-256 ของใบรับรองการลงนามของแอปตรงกับข้อมูลเข้าสู่ระบบในไฟล์สำหรับชื่อแพ็กเกจที่ลงทะเบียนไว้หรือไม่
- แจ้งให้นักพัฒนาแอปภายในอินเทอร์เฟซของเครื่องมือลงทะเบียนแอปที่ไม่รู้จักในโปรแกรมการยืนยันนักพัฒนาแอป Android
API นี้ออกแบบมาเพื่อรองรับเวิร์กโฟลว์ของนักพัฒนาแอปต่างๆ ดังนี้
| กรณีการใช้งาน | คำอธิบาย | ปลายทาง API |
|---|---|---|
| การมีสิทธิ์ของชื่อแพ็กเกจ | ตรวจสอบว่าชื่อแพ็กเกจได้รับการลงทะเบียนแล้วหรือไม่ แสดงผล REGISTERED หากชื่อแพ็กเกจลิงก์กับนักพัฒนาแอปที่ผ่านการยืนยัน หรือ NOT_REGISTERED หากไม่ลิงก์ |
CheckPackageRegistrationStatus |
| แอปได้รับการลงทะเบียนแล้ว | ตรวจสอบว่ามีการลงทะเบียนชื่อแพ็กเกจและลายนิ้วมือของใบรับรองที่เฉพาะเจาะจงเป็นคู่กันหรือไม่ แสดงผล REGISTERED หากมีการลงทะเบียนชื่อแพ็กเกจและลายนิ้วมือของใบรับรองเป็นคู่กัน, NOT_REGISTERED หากไม่มีการลงทะเบียนชื่อแพ็กเกจและลายนิ้วมือของใบรับรองเป็นคู่กัน หรือ REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT หากมีการลงทะเบียนชื่อแพ็กเกจด้วยลายนิ้วมือของใบรับรองอื่น |
CheckPackageRegistrationStatus |
คู่มือนี้จะอธิบายวิธีทํางานต่อไปนี้ให้เสร็จสมบูรณ์
- ตั้งค่าการเข้าถึงและตรวจสอบสิทธิ์ Google Cloud API
- ตรวจสอบว่าชื่อแพ็กเกจและลายนิ้วมือ SHA-256 ของใบรับรองสาธารณะของแอปได้รับการลงทะเบียนในโปรแกรมการยืนยันนักพัฒนาแอป Android โดยนักพัฒนาแอปที่ผ่านการยืนยันแล้วหรือไม่ โดยใช้ลายนิ้วมือ SHA-256 ของใบรับรองสาธารณะที่ให้ไว้ หรือลายนิ้วมือ SHA-256 ของใบรับรองสาธารณะอื่น
- จัดการสถานะการลงทะเบียน API ในเวิร์กโฟลว์ IDE หรือเครื่องมือสำหรับนักพัฒนาแอป
สิ่งที่ต้องมีก่อน
เอกสารนี้มีไว้สำหรับนักพัฒนาแอป Android หรือนักพัฒนาเครื่องมือพัฒนาซอฟต์แวร์ คุณควรมีสิ่งต่อไปนี้ก่อนเริ่มต้น
- สิทธิ์เข้าถึงระดับผู้ดูแลระบบในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google
- ความเข้าใจพื้นฐานเกี่ยวกับ RESTful API, JSON และลายนิ้วมือ SHA-256 ของใบรับรอง
นอกจากนี้ คุณควรทำความคุ้นเคยกับคำศัพท์ต่อไปนี้ด้วย
| คำศัพท์ | คำจำกัดความ |
|---|---|
| การยืนยันนักพัฒนาแอป Android | การยืนยันนักพัฒนาแอป Android เป็นข้อกำหนดใหม่ที่ออกแบบมาเพื่อลิงก์เอนทิตีในโลกจริง (บุคคลและองค์กร) กับแอป Android Android จะกำหนดให้แอปทั้งหมดต้องลงทะเบียนโดยนักพัฒนาแอปที่ผ่านการยืนยันเพื่อให้ผู้ใช้ติดตั้งในอุปกรณ์ Android ที่ผ่านการรับรองได้ |
| ลายนิ้วมือของใบรับรอง | แฮช SHA-256 ของใบรับรองสาธารณะที่ใช้ลงนามแอป |
| สถานะการลงทะเบียน | สถานะที่ API แสดงผลสำหรับชื่อแพ็กเกจของแอป หรือชื่อแพ็กเกจและลายนิ้วมือ SHA-256 ของใบรับรองสาธารณะของแอปเป็นคู่กัน สถานะนี้จะกำหนดการดำเนินการที่คุณต้องทำ (เช่น REGISTERED, NOT_REGISTERED) |
ปลายทางบริการ
ปลายทางบริการ คือ URL ฐานที่ระบุที่อยู่เครือข่ายของบริการ API บริการนี้มีปลายทางบริการต่อไปนี้ และ URI ทั้งหมดจะเกี่ยวข้องกับปลายทางบริการนี้
https://androiddeveloperidstatus.googleapis.com
เปิดใช้ API
หากต้องการใช้ Android Developer ID Status API คุณต้องทำตามขั้นตอนการตั้งค่าเพื่อสร้างโปรเจ็กต์และเปิดใช้ API
สร้างโปรเจ็กต์ Google Cloud
- สร้างบัญชี Google Cloud หากยังไม่มี
- เปิด คอนโซล Google Cloud
- สร้างโปรเจ็กต์ Google Cloud
เปิดใช้ API ในโปรเจ็กต์
- ในคอนโซล Google Cloud ให้ไปที่API และบริการ > คลัง
- เลือกโปรเจ็กต์จากเมนูแบบเลื่อนลง
- ค้นหา Android Developer ID Status API
- คลิกเปิดใช้
ตรวจสอบสิทธิ์
API รองรับข้อมูลเข้าสู่ระบบคีย์ API วิธีรับคีย์ API
- ในคอนโซล Google Cloud ให้ไปที่API และบริการ > ข้อมูลเข้าสู่ระบบ
- คลิก + สร้างข้อมูลเข้าสู่ระบบ แล้วเลือก คีย์ API
- กำหนดค่าคีย์แล้วคัดลอก ใช้คีย์นี้ในส่วนหัวของคำขอ
ตรวจสอบสถานะการลงทะเบียนแอป
คุณสามารถค้นหาทรัพยากร PackageRegistrationStatus เพื่อยืนยันชื่อแพ็กเกจอย่างเดียว หรือตรวจสอบชื่อแพ็กเกจที่จับคู่กับลายนิ้วมือของใบรับรองที่เฉพาะเจาะจง
ตรวจสอบชื่อแพ็กเกจ
หากต้องการตรวจสอบว่าชื่อแพ็กเกจแอปได้รับการลงทะเบียนโดยนักพัฒนาแอปที่ผ่านการยืนยันแล้วหรือไม่ ให้ส่งคำขอ GET ที่มีการตรวจสอบสิทธิ์ซึ่งมีชื่อแพ็กเกจของแอป Android (เช่น com.example.app) ไปยังปลายทาง packageRegistrationStatus:check โดยไม่มีพารามิเตอร์ที่ไม่บังคับ
คำขอ:
curl -X GET "https://androiddeveloperidstatus.googleapis.com/v1/packages/com.example.app/packageRegistrationStatus:check" \
-H "X-Goog-Api-Key: [key]"
ผลลัพธ์
การตอบกลับ (ลงทะเบียนแล้ว):
หากชื่อแพ็กเกจได้รับการลงทะเบียน คุณจะได้รับการตอบกลับ HTTP ต่อไปนี้ในเนื้อหาการตอบกลับ HTTP พร้อมโค้ดตอบกลับ HTTP 200
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED"
}
การดำเนินการที่แนะนำ: แจ้งให้นักพัฒนาแอปทราบว่าชื่อแพ็กเกจได้รับการลงทะเบียนแล้ว
การตอบกลับ (ยังไม่ได้ลงทะเบียน):
หากชื่อแพ็กเกจยังไม่ได้ลงทะเบียน คุณจะได้รับการตอบกลับ HTTP ต่อไปนี้ในเนื้อหาการตอบกลับ HTTP พร้อมโค้ดตอบกลับ HTTP 200
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "NOT_REGISTERED"
}
ยืนยันชื่อแพ็กเกจและลายนิ้วมือของใบรับรองเป็นคู่กัน
หากต้องการตรวจสอบว่าชื่อแพ็กเกจแอปได้รับการลงทะเบียนด้วยลายนิ้วมือ SHA-256 ของใบรับรองสาธารณะที่เฉพาะเจาะจงหรือไม่ ให้ส่งพารามิเตอร์การค้นหา certificateFingerprint
คำขอ:
curl -X GET "https://androiddeveloperidstatus.googleapis.com/v1/packages/com.example.app/packageRegistrationStatus:check?certificateFingerprint=d6ac89ed1d0a805aad4b087d06d5f41645b814480b133fbc867ef7498d069e06" \
-H "X-Goog-Api-Key: [key]"
ผลลัพธ์
การตอบกลับ (ลงทะเบียนด้วยลายนิ้วมือของใบรับรองที่ตรงกัน):
หากชื่อแพ็กเกจได้รับการลงทะเบียนด้วยลายนิ้วมือ SHA-256 ของใบรับรองสาธารณะที่ให้ไว้ คุณจะได้รับการตอบกลับ HTTP ต่อไปนี้ในเนื้อหาการตอบกลับ HTTP พร้อมโค้ดตอบกลับ HTTP 200
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED"
}
การตอบกลับ (ลงทะเบียนด้วยลายนิ้วมือของใบรับรองอื่น):
หากชื่อแพ็กเกจได้รับการลงทะเบียนด้วยลายนิ้วมือ SHA-256 ของใบรับรองอื่นที่ไม่ใช่ที่ให้ไว้ คุณจะได้รับการตอบกลับ HTTP ต่อไปนี้ในเนื้อหาการตอบกลับ HTTP พร้อมโค้ดตอบกลับ HTTP 200
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT"
}
การตอบกลับ (ยังไม่ได้ลงทะเบียน):
หากชื่อแพ็กเกจยังไม่ได้ลงทะเบียนด้วยฟิงเกอร์ปรินต์ SHA-256 ของใบรับรองสาธารณะที่ให้ไว้ คุณจะได้รับการตอบกลับ HTTP ต่อไปนี้ในเนื้อหาการตอบกลับ HTTP พร้อมโค้ดตอบกลับ HTTP 200
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "NOT_REGISTERED"
}
ตัวอย่างการใช้งาน Java
คลาส Java ต่อไปนี้แสดงวิธีเรียก API โดยใช้ HttpClient มาตรฐานของ Java 11
import java.io.IOException;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
public class DeveloperIdStatusClient {
private static final String API_ENDPOINT = "https://androiddeveloperidstatus.googleapis.com";
public static void main(String[] args) {
String apiKey = "YOUR_API_KEY";
String packageName = "com.example.app";
String certificateFingerprint = "d6ac89ed1d0a805aad4b087d06d5f41645b814480b133fbc867ef7498d069e06";
try {
String response = checkPackageRegistrationStatus(apiKey, packageName, certificateFingerprint);
System.out.println("Response: " + response);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* Checks the registration status of an Android package.
*
* @param apiKey The Google API key for authentication.
* @param packageName The fully-qualified Android package name (for example, "com.example.app").
* @param certificateFingerprint Optional SHA-256 certificate fingerprint. Pass null or empty to omit.
* @return The JSON response string from the API.
*/
public static String checkPackageRegistrationStatus(
String apiKey, String packageName, String certificateFingerprint)
throws IOException, InterruptedException {
// 1. Build the URL path (accepts dots directly)
// Format: /v1/packages/{package}/packageRegistrationStatus:check
String path = String.format("/v1/packages/%s/packageRegistrationStatus:check", packageName);
// 2. Build query parameters (only certificateFingerprint if provided)
StringBuilder queryBuilder = new StringBuilder();
if (certificateFingerprint != null && !certificateFingerprint.isEmpty()) {
queryBuilder.append("certificateFingerprint=")
.append(URLEncoder.encode(certificateFingerprint, StandardCharsets.UTF_8));
}
String fullUrl = API_ENDPOINT + path;
if (queryBuilder.length() > 0) {
fullUrl += "?" + queryBuilder.toString();
}
// 3. Create and send the HTTP GET request with API Key header
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(fullUrl))
.header("Accept", "application/json")
.header("X-Goog-Api-Key", apiKey)
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() != 200) {
throw new IOException("Unexpected response code: " + response.statusCode() + ", body: " + response.body());
}
return response.body();
}
}
ทำความเข้าใจสถานะการลงทะเบียนและการจัดการข้อผิดพลาด
เมื่อคำขอ API ล้มเหลว Android Developer ID Status API จะแสดงผลออบเจ็กต์ข้อผิดพลาด JSON มาตรฐานของ Google Cloud ในเนื้อหาการตอบกลับ ออบเจ็กต์นี้มีโครงสร้างที่สอดคล้องกันเพื่อให้คุณเข้าใจและจัดการข้อผิดพลาดได้
ตัวอย่างการตอบกลับข้อผิดพลาด
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
ออบเจ็กต์ข้อผิดพลาดมีฟิลด์คีย์ต่อไปนี้
code: รหัสสถานะ HTTP (เช่น400,403,500)message: คำอธิบายข้อผิดพลาดเป็นภาษาอังกฤษสำหรับนักพัฒนาแอป ข้อความนี้ไม่เสถียรและอาจมีการเปลี่ยนแปลง ดังนั้นอย่าสร้างตรรกะการแยกวิเคราะห์รอบๆ ข้อความนี้status: รหัสข้อผิดพลาด Canonical ที่ระบุประเภทข้อผิดพลาดโดยโปรแกรม (เช่นINVALID_ARGUMENT,PERMISSION_DENIED) ตรรกะการจัดการข้อผิดพลาดควรสร้างขึ้นจากตัวระบุที่เสถียรนี้
ตารางต่อไปนี้แสดงข้อผิดพลาดที่พบบ่อยที่สุดที่ API แสดงผลและการดำเนินการที่แนะนำ
| สถานะ HTTP | รหัสข้อผิดพลาด Canonical (status) |
ความหมายและสาเหตุที่พบบ่อย | การดำเนินการที่แนะนำ | ลองอีกครั้งได้ไหม |
|---|---|---|---|---|
400 คำขอไม่ถูกต้อง |
INVALID_ARGUMENT |
คำขอมีรูปแบบไม่ถูกต้อง | อย่าลองอีกครั้ง ตรวจสอบฟิลด์รายละเอียดในการตอบกลับข้อผิดพลาดเพื่อระบุการละเมิดฟิลด์ที่เฉพาะเจาะจง แก้ไขเพย์โหลดของคำขอแล้วส่งอีกครั้ง | ไม่ได้ |
401 ไม่ได้รับอนุมัติ |
UNAUTHENTICATED |
โทเค็นเพื่อการเข้าถึงหายไป หมดอายุ หรือไม่ถูกต้อง | อย่าลองอีกครั้งทันที ตรวจสอบว่าคุณใช้โทเค็นเพื่อการเข้าถึงหรือคีย์ที่ถูกต้อง | ไม่ได้ |
403 ไม่ได้รับอนุญาต |
PERMISSION_DENIED |
คุณได้รับการตรวจสอบสิทธิ์แล้ว แต่โปรเจ็กต์ของคุณไม่มีสิทธิ์เข้าถึง API สาเหตุที่พบบ่อยที่สุดคือคุณยังไม่ได้เปิดใช้ API ในโปรเจ็กต์ Google Cloud | อย่าลองอีกครั้ง ตรวจสอบว่าคุณใช้รหัสโปรเจ็กต์ที่ถูกต้องและเปิดใช้ API แล้ว | ไม่ได้ |
429 คำขอมากเกินไป |
RESOURCE_EXHAUSTED |
คุณใช้โควต้า API สำหรับโปรเจ็กต์เกินขีดจำกัดแล้ว | หยุดส่งคำขอและลองอีกครั้งหลังจากผ่านไปสักพัก ตรวจสอบโควต้าของโปรเจ็กต์ในคอนโซล Google Cloud | ได้ |
500 ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน |
INTERNAL |
เกิดข้อผิดพลาดที่ไม่คาดคิดในเซิร์ฟเวอร์ของ Google | ข้อผิดพลาดนี้อาจเป็นปัญหาชั่วคราว ลองส่งคำขออีกครั้งโดยใช้กลยุทธ์ Exponential Backoff หากข้อผิดพลาดยังคงอยู่ ให้ติดต่อทีมสนับสนุน | ได้ |
503 ไม่พร้อมให้บริการ |
UNAVAILABLE |
ไม่สามารถใช้บริการได้ชั่วคราว | ลองส่งคำขออีกครั้งโดยใช้กลยุทธ์ Exponential Backoff | ได้ |
ขีดจำกัดโควต้า
ระบบจะบังคับใช้โควต้าการใช้งานตามโปรเจ็กต์เพื่อให้มั่นใจถึงความน่าเชื่อถือของบริการ
| เมธอดของ API | ขีดจำกัดเริ่มต้น (ต่อโปรเจ็กต์) | หมายเหตุ |
|---|---|---|
CheckPackageRegistrationStatus |
1,000 คำขอต่อวัน | ผู้เรียกต้องจัดการการจำกัดอัตราคำขอภายในเพื่อป้องกันการละเมิด |
ตรวจสอบการใช้งาน
คุณสามารถตรวจสอบการใช้งาน API ปัจจุบันของโปรเจ็กต์และดูว่าใกล้ถึงขีดจำกัดโควต้าแล้วหรือไม่ได้โดยตรงใน Google Cloud Console
- ไปที่หน้า API และบริการ > แดชบอร์ด
- เลือก Android Developer ID Status API
- คลิกแท็บโควต้า
แดชบอร์ดนี้จะแสดงรายละเอียดปริมาณคำขอตามช่วงเวลา