Android डेवलपर की स्थिति बताने वाले एपीआई का इस्तेमाल करके यह पता लगाएं कि किसी Android ऐप्लिकेशन पैकेज का नाम, पुष्टि किए गए डेवलपर के साथ रजिस्टर है या नहीं. अगर आपको सॉफ़्टवेयर डेवलपमेंट टूल, आईडीई या ऑटोमेटेड सीआई/सीडी वर्कफ़्लो बनाने हैं, तो इस सर्वर-टू-सर्वर एपीआई को इंटिग्रेट करके ये काम किए जा सकते हैं:
- यह देखना कि किसी ऐप्लिकेशन पैकेज का नाम, पुष्टि किए गए डेवलपर के नाम पर रजिस्टर है या नहीं
- पुष्टि करें कि किसी ऐप्लिकेशन के साइनिंग सर्टिफ़िकेट का SHA-256 फ़िंगरप्रिंट, रजिस्टर किए गए पैकेज के नाम के लिए फ़ाइल में मौजूद क्रेडेंशियल से मेल खाता है या नहीं
- अपने टूल के इंटरफ़ेस में डेवलपर को सूचना दें, ताकि वे Android डेवलपर की पहचान की पुष्टि कार्यक्रम में, ऐसे ऐप्लिकेशन रजिस्टर कर सकें जिनकी पहचान नहीं हुई है
इस एपीआई को डेवलपर के अलग-अलग वर्कफ़्लो के साथ काम करने के लिए डिज़ाइन किया गया है:
| इस्तेमाल का उदाहरण | ब्यौरा | एपीआई एंडपॉइंट |
|---|---|---|
| पैकेज के नाम से जुड़ी ज़रूरी शर्तें | यह देखना कि पैकेज का नाम पहले से रजिस्टर है या नहीं. अगर पैकेज का नाम, पुष्टि किए गए किसी डेवलपर से लिंक है, तो REGISTERED दिखाता है. ऐसा न होने पर, NOT_REGISTERED दिखाता है. |
CheckPackageRegistrationStatus |
| ऐप्लिकेशन रजिस्टर कर लिया गया है | यह कुकी यह जांच करती है कि क्या किसी पैकेज का नाम और सर्टिफ़िकेट फ़िंगरप्रिंट की जोड़ी रजिस्टर की गई है. अगर पैकेज का नाम और सर्टिफ़िकेट फ़िंगरप्रिंट का पेयर रजिस्टर किया गया है, तो REGISTERED दिखाता है. अगर पैकेज का नाम और सर्टिफ़िकेट फ़िंगरप्रिंट का पेयर रजिस्टर नहीं किया गया है, तो NOT_REGISTERED दिखाता है. अगर पैकेज का नाम किसी दूसरे सर्टिफ़िकेट फ़िंगरप्रिंट के साथ रजिस्टर किया गया है, तो REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT दिखाता है. |
CheckPackageRegistrationStatus |
इस गाइड में, ये टास्क पूरे करने का तरीका बताया गया है:
- Google Cloud API के ऐक्सेस और पुष्टि करने की सुविधा सेट अप करें.
- इस बात की पुष्टि करें कि किसी ऐप्लिकेशन के पैकेज का नाम और सार्वजनिक सर्टिफ़िकेट SHA-256 फ़िंगरप्रिंट पेयर, Android डेवलपर के तौर पर पहचान की पुष्टि करने के प्रोग्राम में रजिस्टर किया गया है या नहीं. यह पुष्टि, पहचान की पुष्टि करा चुके किसी डेवलपर ने की हो. इसके लिए, दिए गए सार्वजनिक सर्टिफ़िकेट SHA-256 फ़िंगरप्रिंट या किसी दूसरे सार्वजनिक सर्टिफ़िकेट SHA-256 फ़िंगरप्रिंट का इस्तेमाल किया गया हो.
- अपने आईडीई या डेवलपर टूल के वर्कफ़्लो में, एपीआई रजिस्ट्रेशन की स्थितियों को मैनेज करें.
ज़रूरी शर्तें
यह दस्तावेज़, Android ऐप्लिकेशन डेवलपर या सॉफ़्टवेयर डेवलपमेंट टूल डेवलपर के लिए है. शुरू करने से पहले, आपके पास ये चीज़ें होनी चाहिए:
- Google Cloud प्रोजेक्ट का एडमिन के तौर पर ऐक्सेस.
- RESTful API, JSON, और SHA-256 सर्टिफ़िकेट फ़िंगरप्रिंट के बारे में बुनियादी जानकारी.
आपको इन शब्दों के बारे में भी जानकारी होनी चाहिए:
| शब्द | परिभाषा |
|---|---|
| Android डेवलपर की पहचान की पुष्टि | Android डेवलपर की पहचान की पुष्टि करना एक नई ज़रूरी शर्त है. इसे, असली दुनिया की इकाइयों (व्यक्तियों और संगठनों) को उनके Android ऐप्लिकेशन से जोड़ने के लिए डिज़ाइन किया गया है. Android यह पक्का करेगा कि सभी ऐप्लिकेशन पुष्टि किए गए डेवलपर ने रजिस्टर किए हों. यह इसलिए ज़रूरी है, ताकि उपयोगकर्ता सर्टिफ़ाइड Android डिवाइसों पर ऐप्लिकेशन इंस्टॉल कर पाएं. |
| सर्टिफ़िकेट फ़िंगरप्रिंट | ऐप्लिकेशन पर हस्ताक्षर करने के लिए इस्तेमाल किए गए सार्वजनिक सर्टिफ़िकेट का SHA-256 हैश. |
| रजिस्ट्रेशन की स्थिति | किसी ऐप्लिकेशन के पैकेज के नाम या ऐप्लिकेशन के पैकेज के नाम और सार्वजनिक सर्टिफ़िकेट के SHA-256 फ़िंगरप्रिंट पेयर के लिए, एपीआई से मिला स्टेटस. इस स्थिति से पता चलता है कि आपको कौनसी कार्रवाई करनी है. उदाहरण के लिए, REGISTERED, NOT_REGISTERED. |
सेवा का एंडपॉइंट
सेवा एंडपॉइंट एक बेस यूआरएल होता है. यह किसी एपीआई सेवा का नेटवर्क पता बताता है. इस सेवा का एंडपॉइंट यह है. यहां दिए गए सभी यूआरआई, इस सेवा एंडपॉइंट से जुड़े हुए हैं:
https://androiddeveloperidstatus.googleapis.com
एपीआई चालू करना
Android डेवलपर आईडी की स्थिति बताने वाले एपीआई का इस्तेमाल करने के लिए, आपको प्रोजेक्ट बनाने और एपीआई चालू करने के लिए सेटअप के चरण पूरे करने होंगे.
Google Cloud प्रोजेक्ट बनाना
- अगर आपके पास Google Cloud खाता नहीं है, तो एक खाता बनाएं.
- Google Cloud Console खोलें.
- Google Cloud प्रोजेक्ट बनाएं.
अपने प्रोजेक्ट में एपीआई चालू करना
- Google Cloud Console में, एपीआई और सेवाएं > लाइब्रेरी पर जाएं.
- ड्रॉप-डाउन मेन्यू से अपना प्रोजेक्ट चुनें.
- Android Developer ID Status API खोजें.
- चालू करें पर क्लिक करें.
प्रमाणीकृत करें
यह एपीआई, एपीआई पासकोड क्रेडेंशियल के साथ काम करता है. एपीआई पासकोड पाने के लिए:
- Google Cloud console में, एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.
- + क्रेडेंशियल बनाएं पर क्लिक करें और एपीआई पासकोड चुनें.
- कुंजी को कॉन्फ़िगर करें और उसे कॉपी करें. अपने अनुरोध हेडर में इस कुंजी का इस्तेमाल करें.
ऐप्लिकेशन के रजिस्ट्रेशन का स्टेटस देखना
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]"
नतीजे
जवाब (रजिस्टर किया गया):
अगर पैकेज का नाम रजिस्टर है, तो आपको एचटीटीपी रिस्पॉन्स कोड 200 के साथ यह एचटीटीपी रिस्पॉन्स बॉडी मिलेगी:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED"
}
सुझाई गई कार्रवाई: डेवलपर को बताएं कि पैकेज का नाम पहले ही रजिस्टर किया जा चुका है.
जवाब (रजिस्टर नहीं किया गया):
अगर पैकेज का नाम रजिस्टर नहीं है, तो आपको एचटीटीपी रिस्पॉन्स कोड 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 फ़िंगरप्रिंट के साथ रजिस्टर किया गया है, तो आपको एचटीटीपी रिस्पॉन्स कोड 200 के साथ यह एचटीटीपी रिस्पॉन्स बॉडी मिलेगी:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED"
}
जवाब (किसी दूसरे सर्टिफ़िकेट फ़िंगरप्रिंट के साथ रजिस्टर किया गया):
अगर पैकेज का नाम, दिए गए सर्टिफ़िकेट SHA-256 फ़िंगरप्रिंट से अलग किसी दूसरे सर्टिफ़िकेट SHA-256 फ़िंगरप्रिंट के साथ रजिस्टर किया गया है, तो आपको एचटीटीपी रिस्पॉन्स कोड 200 के साथ यह एचटीटीपी रिस्पॉन्स बॉडी मिलेगी:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT"
}
जवाब (रजिस्टर नहीं किया गया):
अगर पैकेज का नाम, दिए गए सार्वजनिक सर्टिफ़िकेट SHA-256 फ़िंगरप्रिंट के साथ रजिस्टर नहीं किया गया है, तो आपको 200 वाले एचटीटीपी रिस्पॉन्स कोड के साथ यह एचटीटीपी रिस्पॉन्स बॉडी मिलेगी:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "NOT_REGISTERED"
}
Java में लागू करने का उदाहरण
इस Java क्लास में, Java 11 के स्टैंडर्ड HttpClient का इस्तेमाल करके एपीआई को कॉल करने का तरीका बताया गया है.
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();
}
}
रजिस्ट्रेशन की स्थितियां और गड़बड़ी ठीक करने के बारे में जानकारी
एपीआई अनुरोध पूरा न होने पर, Android Developer ID Status API, जवाब के मुख्य हिस्से में Google Cloud का स्टैंडर्ड JSON गड़बड़ी ऑब्जेक्ट दिखाता है. यह ऑब्जेक्ट, गड़बड़ी को समझने और उसे ठीक करने के लिए एक जैसा स्ट्रक्चर उपलब्ध कराता है.
गड़बड़ी के जवाब का उदाहरण:
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
गड़बड़ी वाले ऑब्जेक्ट में ये मुख्य फ़ील्ड शामिल होते हैं:
code: एचटीटीपी स्टेटस कोड (उदाहरण के लिए,400,403,500).message: डेवलपर के लिए, गड़बड़ी की जानकारी अंग्रेज़ी में. यह मैसेज स्थिर नहीं है और इसमें बदलाव हो सकता है. इसलिए, इसके आधार पर पार्सिंग लॉजिक न बनाएं.status: यह एक कैननिकल गड़बड़ी कोड है. यह प्रोग्राम के हिसाब से गड़बड़ी के टाइप की पहचान करता है. उदाहरण के लिए,INVALID_ARGUMENT,PERMISSION_DENIED. गड़बड़ी ठीक करने के लिए, आपको इस स्टेबल आइडेंटिफ़ायर पर लॉजिक बनाना चाहिए.
यहां दी गई टेबल में, एपीआई से मिलने वाली सबसे सामान्य गड़बड़ियों और उन्हें ठीक करने के लिए सुझाए गए तरीके दिए गए हैं.
| एचटीटीपी स्टेटस | कैननिकल गड़बड़ी का कोड (status) |
मतलब और सामान्य वजह | सुझाई गई कार्रवाई | क्या इसे फिर से आज़माया जा सकता है? |
|---|---|---|---|---|
400 गलत अनुरोध |
INVALID_ARGUMENT |
अनुरोध गलत तरीके से किया गया था. | फिर से कोशिश न करें. गड़बड़ी के जवाब में मौजूद 'जानकारी' फ़ील्ड की जांच करें, ताकि उल्लंघन करने वाले फ़ील्ड की पहचान की जा सके. अनुरोध के पेलोड में बदलाव करें और उसे फिर से भेजें. | नहीं |
401 अनुमति नहीं है |
UNAUTHENTICATED |
ऐक्सेस टोकन मौजूद नहीं है, इसकी समयसीमा खत्म हो गई है या यह अमान्य है. | तुरंत फिर से कोशिश न करें. पक्का करें कि आपने सही ऐक्सेस टोकन या कुंजी का इस्तेमाल किया हो. | नहीं |
403 अनुमति नहीं है |
PERMISSION_DENIED |
आपकी पुष्टि हो गई है, लेकिन आपके प्रोजेक्ट के पास एपीआई को ऐक्सेस करने की अनुमति नहीं है. इस समस्या की सबसे आम वजह यह है कि आपने अपने Google Cloud प्रोजेक्ट में एपीआई को चालू नहीं किया है. | फिर से कोशिश न करें. पुष्टि करें कि आपने सही प्रोजेक्ट आईडी का इस्तेमाल किया हो और एपीआई चालू हो. | नहीं |
429 कई बार अनुरोध किया गया |
RESOURCE_EXHAUSTED |
आपने अपने प्रोजेक्ट के लिए एपीआई के तय कोटे को पार कर लिया है. | अनुरोध भेजना बंद करें और कुछ समय बाद फिर से कोशिश करें. Google Cloud Console में जाकर, अपने प्रोजेक्ट के कोटे देखें. | हां |
500 सर्वर में गड़बड़ी |
INTERNAL |
Google के सर्वर पर अचानक कोई गड़बड़ी हुई. | यह समस्या कुछ समय के लिए हो सकती है. एक्स्पोनेंशियल बैकऑफ़ रणनीति का इस्तेमाल करके, अनुरोध को फिर से भेजें. अगर गड़बड़ी बनी रहती है, तो सहायता टीम से संपर्क करें. | हां |
503 सेवा उपलब्ध नहीं है |
UNAVAILABLE |
सेवा अस्थायी रूप से अनुपलब्ध है. | एक्स्पोनेंशियल बैकऑफ़ रणनीति का इस्तेमाल करके, अनुरोध को फिर से भेजें. | हां |
कोटा की सीमाएं
सेवा की विश्वसनीयता बनाए रखने के लिए, हर प्रोजेक्ट के हिसाब से इस्तेमाल के कोटे लागू किए जाते हैं.
| एपीआई मेथड | डिफ़ॉल्ट सीमा (हर प्रोजेक्ट के लिए) | नोट |
|---|---|---|
CheckPackageRegistrationStatus |
हर दिन 1,000 अनुरोध | गलत इस्तेमाल को रोकने के लिए, कॉल करने वालों को इंटरनल रेट लिमिटिंग को मैनेज करना होगा. |
इस्तेमाल पर नज़र रखना
Google Cloud Console में जाकर, अपने प्रोजेक्ट के लिए एपीआई के मौजूदा इस्तेमाल पर नज़र रखी जा सकती है. साथ ही, यह भी देखा जा सकता है कि आपने कोटे की सीमा का कितना इस्तेमाल किया है.
- एपीआई और सेवाएं > डैशबोर्ड पेज पर जाएं.
- Android डेवलपर आईडी की स्थिति बताने वाला एपीआई चुनें.
- कोटा टैब पर क्लिक करें.
इस डैशबोर्ड में, समय के साथ आपके अनुरोधों की संख्या के बारे में पूरी जानकारी मिलती है.