Aby sprawdzić, czy nazwa pakietu aplikacji na Androida jest zarejestrowana u zweryfikowanego dewelopera, użyj interfejsu Android Developer Status API. Jeśli tworzysz narzędzia do tworzenia oprogramowania, środowiska IDE lub zautomatyzowane przepływy pracy CI/CD, możesz zintegrować ten interfejs API typu serwer-serwer, aby:
- sprawdzić, czy nazwa pakietu aplikacji jest zarejestrowana u zweryfikowanego dewelopera;
- sprawdzić, czy odcisk cyfrowy SHA-256 certyfikatu podpisywania aplikacji jest zgodny z danymi logowania zapisanymi dla zarejestrowanej nazwy pakietu;
- prosić deweloperów w interfejsie narzędzia o zarejestrowanie nierozpoznanych aplikacji w programie weryfikacji deweloperów aplikacji na Androida.
Ten interfejs API został zaprojektowany tak, aby obsługiwać różne przepływy pracy deweloperów:
| Przypadek użycia | Opis | Punkt końcowy API |
|---|---|---|
| Kwalifikowanie się nazwy pakietu | Sprawdzanie, czy nazwa pakietu została już zarejestrowana. Jeśli nazwa pakietu jest powiązana z dowolnym zweryfikowanym deweloperem, zwraca wartość REGISTERED. W przeciwnym razie zwraca wartość NOT_REGISTERED. |
CheckPackageRegistrationStatus |
| Aplikacja została zarejestrowana | Sprawdzanie, czy zarejestrowana jest konkretna para nazwy pakietu i odcisku cyfrowego certyfikatu. Jeśli para nazwy pakietu i odcisku cyfrowego certyfikatu jest zarejestrowana, zwraca wartość REGISTERED. Jeśli nie jest zarejestrowana, zwraca wartość NOT_REGISTERED. Jeśli nazwa pakietu jest zarejestrowana z innym odciskiem cyfrowym certyfikatu, zwraca wartość REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT. |
CheckPackageRegistrationStatus |
Z tego przewodnika dowiesz się, jak wykonać te czynności:
- Skonfiguruj dostęp do interfejsu Google Cloud API i uwierzytelnianie.
- Sprawdź, czy para nazwy pakietu aplikacji i odcisku cyfrowego SHA-256 certyfikatu publicznego została zarejestrowana w programie weryfikacji deweloperów aplikacji na Androida przez zweryfikowanego dewelopera z podanym odciskiem cyfrowym SHA-256 certyfikatu publicznego lub z innym odciskiem cyfrowym SHA-256 certyfikatu publicznego.
- Obsługuj stany rejestracji interfejsu API w środowisku IDE lub przepływie pracy narzędzia dla deweloperów.
Wymagania wstępne
Ten dokument jest przeznaczony dla deweloperów aplikacji na Androida lub deweloperów narzędzi do tworzenia oprogramowania. Zanim zaczniesz, musisz mieć:
- dostęp administracyjny do projektu Google Cloud;
- podstawową wiedzę o interfejsach RESTful API, JSON i odciskach cyfrowych certyfikatów SHA-256.
Powinieneś też znać te terminy:
| Okres obowiązywania | Definicja |
|---|---|
| Weryfikacja dewelopera aplikacji na Androida | Weryfikacja dewelopera aplikacji na Androida to nowe wymaganie, które ma na celu powiązanie rzeczywistych podmiotów (osób i organizacji) z ich aplikacjami na Androida. Android będzie wymagać, aby wszystkie aplikacje instalowane przez użytkowników na certyfikowanych urządzeniach z Androidem były zarejestrowane przez zweryfikowanych deweloperów. |
| Odcisk cyfrowy certyfikatu | Skrót SHA-256 certyfikatu publicznego używanego do podpisywania aplikacji. |
| Stan rejestracji | Stan zwracany przez interfejs API dla nazwy pakietu aplikacji lub pary nazwy pakietu aplikacji i odcisku cyfrowego SHA-256 certyfikatu publicznego. Ten stan określa działanie, które musisz wykonać (np. REGISTERED, NOT_REGISTERED). |
Punkt końcowy usługi
Punkt końcowy usługi to podstawowy adres URL, który określa adres sieciowy usługi interfejsu API. Ta usługa ma następujący punkt końcowy, a wszystkie identyfikatory URI odnoszą się do niego:
https://androiddeveloperidstatus.googleapis.com
Włącz API
Aby korzystać z interfejsu Android Developer ID Status API, musisz wykonać czynności konfiguracyjne, aby utworzyć projekt i włączyć interfejs API.
Utwórz projekt Google Cloud
- Jeśli nie masz konta Google Cloud, utwórz je.
- Otwórz konsolę Google Cloud.
- Utwórz projekt Google Cloud.
Włącz interfejs API w projekcie
- W konsoli Google Cloud otwórz Interfejsy API i usługi > Biblioteka.
- W menu kliknij swój projekt.
- Wyszukaj Android Developer ID Status API.
- Kliknij Włącz.
Uwierzytelnij
Interfejs API obsługuje dane logowania klucza interfejsu API. Aby uzyskać klucz interfejsu API:
- W konsoli Google Cloud otwórz Interfejsy API i usługi > Dane logowania.
- Kliknij + Utwórz dane logowania i wybierz Klucz interfejsu API.
- Skonfiguruj klucz i skopiuj go. Użyj tego klucza w nagłówkach żądań.
Sprawdź stan rejestracji aplikacji
Możesz wysłać zapytanie do zasobu PackageRegistrationStatus, aby sprawdzić samą nazwę pakietu lub nazwę pakietu powiązaną z konkretnym odciskiem cyfrowym certyfikatu.
Sprawdź nazwę pakietu
Aby sprawdzić, czy nazwa pakietu aplikacji jest zarejestrowana przez zweryfikowanego dewelopera, wyślij uwierzytelnione żądanie GET zawierające nazwę pakietu aplikacji na Androida (np. com.example.app) do punktu końcowego packageRegistrationStatus:check bez parametrów opcjonalnych:
Prośba:
curl -X GET "https://androiddeveloperidstatus.googleapis.com/v1/packages/com.example.app/packageRegistrationStatus:check" \
-H "X-Goog-Api-Key: [key]"
Wyniki
Odpowiedź (zarejestrowana):
Jeśli nazwa pakietu jest zarejestrowana, otrzymasz ten tekst odpowiedzi HTTP z kodem odpowiedzi HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED"
}
Zalecane działanie: poinformuj dewelopera, że nazwa pakietu jest już zarejestrowana.
Odpowiedź (niezarejestrowana):
Jeśli nazwa pakietu nie jest zarejestrowana, otrzymasz ten tekst odpowiedzi HTTP z kodem odpowiedzi HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "NOT_REGISTERED"
}
Sprawdź pary nazwy pakietu i odcisku cyfrowego certyfikatu
Aby sprawdzić, czy nazwa pakietu aplikacji jest zarejestrowana z konkretnym odciskiem cyfrowym SHA-256 certyfikatu publicznego, przekaż parametr zapytania certificateFingerprint:
Prośba:
curl -X GET "https://androiddeveloperidstatus.googleapis.com/v1/packages/com.example.app/packageRegistrationStatus:check?certificateFingerprint=d6ac89ed1d0a805aad4b087d06d5f41645b814480b133fbc867ef7498d069e06" \
-H "X-Goog-Api-Key: [key]"
Wyniki
Odpowiedź (zarejestrowana z pasującym odciskiem cyfrowym certyfikatu):
Jeśli nazwa pakietu jest zarejestrowana z podanym odciskiem cyfrowym SHA-256 certyfikatu publicznego, otrzymasz ten tekst odpowiedzi HTTP z kodem odpowiedzi HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED"
}
Odpowiedź (zarejestrowana z innym odciskiem cyfrowym certyfikatu):
Jeśli nazwa pakietu jest zarejestrowana z innym odciskiem cyfrowym SHA-256 certyfikatu niż podany, otrzymasz ten tekst odpowiedzi HTTP z kodem odpowiedzi HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT"
}
Odpowiedź (niezarejestrowana):
Jeśli nazwa pakietu nie jest zarejestrowana z podanym odciskiem cyfrowym SHA-256 certyfikatu publicznego, otrzymasz ten tekst odpowiedzi HTTP z kodem odpowiedzi HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "NOT_REGISTERED"
}
Przykładowa implementacja w Javie
Ta klasa Java pokazuje, jak wywołać interfejs API za pomocą standardowego elementu HttpClient w Javie 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();
}
}
Informacje o stanach rejestracji i obsłudze błędów
Gdy żądanie do interfejsu API nie powiedzie się, interfejs Android Developer ID Status API zwraca w treści odpowiedzi standardowy obiekt błędu JSON Google Cloud. Ten obiekt zapewnia spójną strukturę, która ułatwia zrozumienie i obsługę błędu.
Przykładowa odpowiedź z błędem:
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
Obiekt błędu zawiera te kluczowe pola:
code: kod stanu HTTP (np.400,403,500).message: opis błędu w języku angielskim przeznaczony dla deweloperów. Ten komunikat nie jest stabilny i może się zmieniać, więc nie twórz na jego podstawie logiki analizowania.status: kanoniczny kod błędu, który programowo identyfikuje typ błędu (np.INVALID_ARGUMENT,PERMISSION_DENIED). Logika obsługi błędów powinna być oparta na tym stabilnym identyfikatorze.
W tabeli poniżej znajdziesz najczęstsze błędy zwracane przez interfejs API oraz zalecane działania.
| Stan HTTP | Kanoniczny kod błędu (status) |
Znaczenie i najczęstsza przyczyna | Zalecane działanie | Czy można ponowić próbę? |
|---|---|---|---|---|
400 Bad Request |
INVALID_ARGUMENT |
Żądanie było nieprawidłowe. | Nie ponawiaj próby. Sprawdź pole szczegółów w odpowiedzi z błędem, aby zidentyfikować konkretne naruszenie pola. Popraw ładunek żądania i wyślij go ponownie. | Nie |
401 Unauthorized |
UNAUTHENTICATED |
Brak tokena dostępu, token dostępu wygasł lub jest nieprawidłowy. | Nie ponawiaj próby od razu. Upewnij się, że używasz prawidłowego tokena dostępu lub klucza. | Nie |
403 Forbidden |
PERMISSION_DENIED |
Uwierzytelnianie się powiodło, ale Twój projekt nie ma uprawnień dostępu do interfejsu API. Najczęstszą przyczyną jest to, że interfejs API nie został włączony w projekcie Google Cloud. | Nie ponawiaj próby. Sprawdź, czy używasz prawidłowego identyfikatora projektu i czy interfejs API jest włączony. | Nie |
429 Too Many Requests |
RESOURCE_EXHAUSTED |
Przekroczono limit interfejsu API dla projektu. | Przestań wysyłać żądania i spróbuj ponownie po pewnym czasie. Sprawdź limity projektu w konsoli Google Cloud. | Tak |
500 Internal Server Error |
INTERNAL |
Na serwerach Google wystąpił nieoczekiwany błąd. | Prawdopodobnie jest to problem przejściowy. Ponów żądanie, stosując strategię wzrastającego czasu do ponowienia. Jeśli błąd nadal występuje, skontaktuj się z zespołem pomocy. | Tak |
503 Service Unavailable |
UNAVAILABLE |
Usługa jest czasowo niedostępna. | Ponów żądanie, stosując strategię wzrastającego czasu do ponowienia. | Tak |
Limity przydziału
Limity wykorzystania są egzekwowane w przypadku każdego projektu, aby zapewnić niezawodność usługi.
| Metoda interfejsu API | Domyślny limit (na projekt) | Uwagi |
|---|---|---|
CheckPackageRegistrationStatus |
1000 żądań dziennie | Wywołujący muszą zarządzać wewnętrznym ograniczaniem liczby żądań, aby zapobiec nadużyciom. |
Monitorowanie wykorzystania
Aktualne wykorzystanie interfejsu API w projekcie i stopień zbliżenia się do limitów przydziału możesz monitorować bezpośrednio w konsoli Google Cloud.
- Otwórz stronę Interfejsy API i usługi > Panel.
- Wybierz Android Developer ID Status API.
- Kliknij kartę Limity.
Ten panel zawiera szczegółowe informacje o liczbie żądań w czasie.