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 डेवलपर आईडी स्टेटस एपीआई खोजें.
- चालू करें पर क्लिक करें.
प्रमाणीकृत करें
यह एपीआई, एपीआई पासकोड क्रेडेंशियल के साथ काम करता है. एपीआई पासकोड पाने के लिए:
- 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"
}
सुझाई गई कार्रवाई: अगर यह जांच किसी दूसरे डेवलपर की ओर से की जा रही है, तो उसे बताएं कि पैकेज का नाम रजिस्टर नहीं है.
Java का उदाहरण
Java के इस उदाहरण में, यह देखने के लिए कि पैकेज का नाम रजिस्टर है या नहीं, बिना किसी क्वेरी पैरामीटर के एपीआई को कॉल किया गया है.
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class CheckPackageNameClient {
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";
try {
String response = checkPackageRegistrationStatus(apiKey, packageName);
System.out.println("Response: " + response);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* Checks the registration status of an Android package.
*/
public static String checkPackageRegistrationStatus(String apiKey, String packageName)
throws IOException, InterruptedException {
String fullUrl = String.format("%s/v1/packages/%s/packageRegistrationStatus:check", API_ENDPOINT, packageName);
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();
}
}
पैकेज के नाम और सर्टिफ़िकेट फ़िंगरप्रिंट पेयर की पुष्टि करना
यह देखने के लिए कि किसी ऐप्लिकेशन के पैकेज का नाम, सार्वजनिक सर्टिफ़िकेट के किसी 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 के इस उदाहरण में, किसी खास पैकेज और फ़िंगरप्रिंट पेयर की पुष्टि करने के लिए, यूआरएल-एनकोड किए गए क्वेरी पैरामीटर के तौर पर, certificateFingerprint को साफ़ तौर पर शामिल किया गया है.
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 CheckPackageAndFingerprintClient {
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 = checkPackageAndFingerprintRegistrationStatus(apiKey, packageName, certificateFingerprint);
System.out.println("Response: " + response);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* Checks the registration status of a specific Android package and certificate fingerprint pair.
*/
public static String checkPackageAndFingerprintRegistrationStatus(
String apiKey, String packageName, String certificateFingerprint)
throws IOException, InterruptedException {
String path = String.format("/v1/packages/%s/packageRegistrationStatus:check", packageName);
String encodedFingerprint = URLEncoder.encode(certificateFingerprint, StandardCharsets.UTF_8);
String fullUrl = API_ENDPOINT + path + "?certificateFingerprint=" + encodedFingerprint;
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 डेवलपर आईडी स्टेटस एपीआई, रिस्पॉन्स बॉडी में 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 डेवलपर आईडी स्टेटस एपीआई चुनें.
- कोटे टैब पर क्लिक करें.
इस डैशबोर्ड पर, समय के साथ-साथ आपके अनुरोध की संख्या की पूरी जानकारी मिलती है.