SafetyNet reCAPTCHA API

SafetyNet सेवा में reCAPTCHA API शामिल होता है. इसका इस्तेमाल करके, अपने ऐप्लिकेशन को नुकसान पहुंचाने वाले ट्रैफ़िक से सुरक्षित रखा जा सकता है.

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 v2 और फिर reCAPTCHA Android चुनें.
    • पैकेज: इस एपीआई कुंजी का इस्तेमाल करने वाले हर ऐप्लिकेशन के पैकेज का नाम डालें. किसी ऐप्लिकेशन को एपीआई का इस्तेमाल करने की अनुमति देने के लिए, आपको पैकेज का वही नाम डालना होगा जो ऐप्लिकेशन के पैकेज का नाम है. हर पैकेज का नाम उसकी लाइन में डालें.
    • मालिक: अपने संगठन के हर उस व्यक्ति के लिए ईमेल पता जोड़ें जो आपके ऐप्लिकेशन के reCAPTCHA आकलन की निगरानी करता है.
  2. reCAPTCHA की सेवा की शर्तें स्वीकार करें चेकबॉक्स को चुनें.

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

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

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

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

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

इस सेक्शन में, CAPTCHA की पुष्टि करने का अनुरोध भेजने और उपयोगकर्ता के रिस्पॉन्स टोकन को पाने के लिए, 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 चैलेंज को पूरा कर लेता है. हालांकि, इस तरीके से सिर्फ़ यह पता चलता है कि उपयोगकर्ता ने कैप्चा को सही तरीके से हल किया है. आपको अब भी अपने बैकएंड सर्वर से, उपयोगकर्ता के रिस्पॉन्स टोकन की पुष्टि करनी होगी.

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