SafetyNet reCAPTCHA API

SafetyNet सेवा में reCAPTCHA एपीआई शामिल होता है. इसका इस्तेमाल करके, अपने ऐप्लिकेशन को नुकसान पहुंचाने वाले ट्रैफ़िक से बचाया जा सकता है.

reCAPTCHA एक मुफ़्त सेवा है. यह जोखिम के विश्लेषण के लिए बेहतर इंजन का इस्तेमाल करती है, ताकि आपके ऐप्लिकेशन को स्पैम और अन्य गलत इस्तेमाल से बचाया जा सके. अगर सेवा को यह शक होता है कि आपके ऐप्लिकेशन के साथ इंटरैक्ट करने वाला उपयोगकर्ता, इंसान के बजाय बॉट है, तो वह एक कैप्चा दिखाती है. आपके ऐप्लिकेशन को फिर से काम करने से पहले, इंसान को यह कैप्चा हल करना होगा.

इस दस्तावेज़ में, SafetyNet से reCAPTCHA API को अपने ऐप्लिकेशन में इंटिग्रेट करने का तरीका बताया गया है.

सेवा की अन्य शर्तें

reCAPTCHA API को ऐक्सेस या इस्तेमाल करने का मतलब है कि आपने Google API की सेवा की शर्तों और reCAPTCHA की सेवा की इन शर्तों को स्वीकार कर लिया है. एपीआई को ऐक्सेस करने से पहले, कृपया इस पर लागू होने वाली सभी शर्तों और नीतियों को पढ़कर समझ लें.

reCAPTCHA की सेवा की शर्तें

आपने यह समझ लिया है और सहमत हैं कि reCAPTCHA API, हार्डवेयर और सॉफ़्टवेयर की जानकारी इकट्ठा करके काम करता है. जैसे, डिवाइस और ऐप्लिकेशन का डेटा और पूरी सुरक्षा की जांच के नतीजे. साथ ही, वह विश्लेषण के लिए उस डेटा को Google को भेजता है. Google API की सेवा की शर्तों से जुड़े सेक्शन 3(d) के मुताबिक, आप इस बात की सहमति देते हैं कि अगर एपीआई का इस्तेमाल किया जाता है, तो Google के साथ इस डेटा को इकट्ठा करने और शेयर करने के लिए ज़रूरी सूचना या सहमति देना आपकी ज़िम्मेदारी है.

reCAPTCHA की कुंजी का पेयर रजिस्टर करना

SafetyNet reCAPTCHA API के साथ इस्तेमाल करने के लिए, पासकोड जोड़े को रजिस्टर करने के लिए, reCAPTCHA Android साइनअप साइट पर जाएं. इसके बाद, यह तरीका अपनाएं:

  1. इसके बाद, आपको एक फ़ॉर्म दिखेगा. इसमें यह जानकारी दें:

    • लेबल: आपकी कुंजी के लिए एक यूनीक लेबल. आम तौर पर, अपनी कंपनी या संगठन का नाम इस्तेमाल किया जाता है.
    • reCAPTCHA का टाइप: reCAPTCHA वर्शन 2 चुनें. इसके बाद, reCAPTCHA Android चुनें.
    • पैकेज: इस एपीआई पासकोड का इस्तेमाल करने वाले हर ऐप्लिकेशन का पैकेज नाम दें. किसी ऐप्लिकेशन के लिए एपीआई का इस्तेमाल करने के लिए, आपने जो पैकेज का नाम डाला है वह ऐप्लिकेशन के पैकेज के नाम से पूरी तरह मैच होना चाहिए. हर पैकेज का नाम, अपनी लाइन में डालें.
    • मालिक: अपने संगठन के हर उस व्यक्ति का ईमेल पता जोड़ें जो आपके ऐप्लिकेशन के reCAPTCHA आकलन को मॉनिटर करता है.
  2. reCAPTCHA की सेवा की शर्तें स्वीकार करें चेकबॉक्स को चुनें.

  3. मालिकों को सूचनाएं भेजें: अगर आपको reCAPTCHA API के बारे में ईमेल चाहिए, तो यह चेकबॉक्स चुनें. इसके बाद, सबमिट करें पर क्लिक करें.

  4. इसके बाद दिखने वाले पेज पर, आपकी सार्वजनिक और निजी कुंजियां, साइट पासकोड और गुप्त पासकोड के तहत दिखती हैं. पुष्टि करने का अनुरोध भेजने के लिए, साइट पासकोड का इस्तेमाल किया जाता है. वहीं, उपयोगकर्ता के रिस्पॉन्स टोकन की पुष्टि करने के लिए, सीक्रेट पासकोड का इस्तेमाल किया जाता है.

SafetyNet API डिपेंडेंसी जोड़ना

reCAPTCHA API का इस्तेमाल करने से पहले, अपने प्रोजेक्ट में SafetyNet API जोड़ें. अगर Android Studio का इस्तेमाल किया जा रहा है, तो इस डिपेंडेंसी को अपने ऐप्लिकेशन-लेवल की Gradle फ़ाइल में जोड़ें. ज़्यादा जानकारी के लिए, SafetyNet API सेटअप करना लेख पढ़ें.

reCAPTCHA API का इस्तेमाल करना

इस सेक्शन में, reCAPTCHA API को कॉल करके, पुष्टि करने के लिए कैप्चा का अनुरोध भेजने और उपयोगकर्ता के रिस्पॉन्स टोकन को पाने का तरीका बताया गया है.

पुष्टि करने का अनुरोध भेजना

SafetyNet reCAPTCHA API को चालू करने के लिए, verifyWithRecaptcha() तरीका इस्तेमाल करें. आम तौर पर, यह तरीका तब लागू होता है, जब उपयोगकर्ता आपकी ऐक्टिविटी में कोई यूज़र इंटरफ़ेस (यूआई) एलिमेंट चुनता है. जैसे, कोई बटन.

अपने ऐप्लिकेशन में verifyWithRecaptcha() तरीके का इस्तेमाल करते समय, आपको ये काम करने होंगे:

  • पैरामीटर के तौर पर अपनी एपीआई साइट कुंजी डालें.
  • पुष्टि के अनुरोध वाले टास्क के दोनों संभावित नतीजों को मैनेज करने के लिए, onSuccess() और onFailure() तरीकों को बदलें. खास तौर पर, अगर एपीआई ApiException का कोई इंस्टेंस onFailure() में पास करता है, तो आपको हर उस स्टेटस कोड को मैनेज करना होगा जिसे getStatusCode() का इस्तेमाल करके वापस पाया जा सकता है.

नीचे दिए गए कोड स्निपेट में, इस तरीके को लागू करने का तरीका बताया गया है:

Kotlin

fun onClick(view: View) {
    SafetyNet.getClient(this).verifyWithRecaptcha(YOUR_API_SITE_KEY)
            .addOnSuccessListener(this as Executor, OnSuccessListener { response ->
                // Indicates communication with reCAPTCHA service was
                // successful.
                val userResponseToken = response.tokenResult
                if (response.tokenResult?.isNotEmpty() == true) {
                    // Validate the user response token using the
                    // reCAPTCHA siteverify API.
                }
            })
            .addOnFailureListener(this as Executor, OnFailureListener { e ->
                if (e is ApiException) {
                    // An error occurred when communicating with the
                    // reCAPTCHA service. Refer to the status code to
                    // handle the error appropriately.
                    Log.d(TAG, "Error: ${CommonStatusCodes.getStatusCodeString(e.statusCode)}")
                } else {
                    // A different, unknown type of error occurred.
                    Log.d(TAG, "Error: ${e.message}")
                }
            })
}

Java

public void onClick(View v) {
    SafetyNet.getClient(this).verifyWithRecaptcha(YOUR_API_SITE_KEY)
        .addOnSuccessListener((Executor) this,
            new OnSuccessListener<SafetyNetApi.RecaptchaTokenResponse>() {
                @Override
                public void onSuccess(SafetyNetApi.RecaptchaTokenResponse response) {
                    // Indicates communication with reCAPTCHA service was
                    // successful.
                    String userResponseToken = response.getTokenResult();
                    if (!userResponseToken.isEmpty()) {
                        // Validate the user response token using the
                        // reCAPTCHA siteverify API.
                    }
                }
        })
        .addOnFailureListener((Executor) this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    if (e instanceof ApiException) {
                        // An error occurred when communicating with the
                        // reCAPTCHA service. Refer to the status code to
                        // handle the error appropriately.
                        ApiException apiException = (ApiException) e;
                        int statusCode = apiException.getStatusCode();
                        Log.d(TAG, "Error: " + CommonStatusCodes
                                .getStatusCodeString(statusCode));
                    } else {
                        // A different, unknown type of error occurred.
                        Log.d(TAG, "Error: " + e.getMessage());
                    }
                }
        });
}

उपयोगकर्ता के जवाब के टोकन की पुष्टि करना

जब reCAPTCHA API, onSuccess() तरीका इस्तेमाल करता है, तो इसका मतलब है कि उपयोगकर्ता ने CAPTCHA चैलेंज पूरा कर लिया है. हालांकि, इस तरीके से सिर्फ़ यह पता चलता है कि उपयोगकर्ता ने कैप्चा को सही तरीके से हल किया है. आपको अब भी अपने बैकएंड सर्वर से, उपयोगकर्ता के रिस्पॉन्स टोकन की पुष्टि करनी होगी.

उपयोगकर्ता के रिस्पॉन्स टोकन की पुष्टि करने का तरीका जानने के लिए, उपयोगकर्ता के रिस्पॉन्स की पुष्टि करना लेख पढ़ें.