SafetyNet reCAPTCHA API

SafetyNet পরিষেবায় একটি reCAPTCHA API অন্তর্ভুক্ত থাকে যা আপনি ক্ষতিকারক ট্রাফিক থেকে আপনার অ্যাপকে সুরক্ষিত রাখতে ব্যবহার করতে পারেন।

reCAPTCHA হল একটি ফ্রি পরিষেবা যা উন্নত ঝুঁকি বিশ্লেষণ ইঞ্জিন ব্যবহার করে আপনার অ্যাপকে স্প্যাম ও অন্যান্য অপব্যবহারমূলক অ্যাকশন থেকে রক্ষা করে। আপনার অ্যাপের সাথে ইন্টার‍্যাক্ট করা ব্যবহারকারী কোনও বট হতে পারে বলে পরিষেবা সন্দেহ করলে, এটি একটি ক্যাপচা দেখায় যা আপনার অ্যাপ চালিয়ে যাওয়ার আগে কোনও ব্যক্তিকে সমাধান করতে হবে।

এই ডকুমেন্টে আপনার অ্যাপে SafetyNet থেকে reCAPTCHA API কীভাবে ইন্টিগ্রেট করবেন তা ব্যাখ্যা করা হয়েছে।

পরিষেবার অতিরিক্ত শর্তাবলী

reCAPTCHA API অ্যাক্সেস বা ব্যবহার করার মাধ্যমে, আপনি Google API-এর পরিষেবার শর্তাবলী এবং নিম্নলিখিত reCAPTCHA পরিষেবার শর্তাবলীতে সম্মতি জানাচ্ছেন। API অ্যাক্সেস করার আগে প্রযোজ্য সব শর্তাবলী ও নীতি পড়ে বুঝে নিন।

reCAPTCHA পরিষেবার শর্তাবলী

আপনি সম্মতি দিচ্ছেন এবং বুঝছেন যে ডিভাইস এবং অ্যাপ্লিকেশনের ডেটার মতো হার্ডওয়্যার এবং সফ্টওয়্যার তথ্য সংগ্রহ করে reCAPTCHA API কাজ করে এবং ইন্টিগ্রিটি চেক করার ফলাফল বিশ্লেষণের জন্য Google-এ পাঠানো হয়। Google API পরিষেবার শর্তাবলীর অনুচ্ছেদ 3(d) অনুযায়ী, আপনি সম্মতি দিচ্ছেন যে, এপিআই ব্যবহারের সময়ে Google-এর সাথে এই ডেটা সংগ্রহ করে শেয়ার করার জন্য আপনি যেকোনও প্রয়োজনীয় বিজ্ঞপ্তি বা সম্মতি দেবেন এবং সেই দায়িত্ব আপনার উপর বর্তায়।

reCAPTCHA কী পেয়ার রেজিস্টার করা

SafetyNet reCAPTCHA API-এর সাথে ব্যবহার করার জন্য একটি কী পেয়ার রেজিস্টার করতে, reCAPTCHA Android সাইন-আপ সাইটে নেভিগেট করুন, তারপর নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

  1. যে ফর্মটি দেখা যাবে, তাতে নিম্নলিখিত তথ্য দিন:

    • লেবেল: আপনার কী-এর জন্য অনন্য লেবেল। সাধারণত, আপনি নিজের কোম্পানি বা সংস্থার নাম ব্যবহার করেন।
    • reCAPTCHA-এর ধরন: reCAPTCHA v2, তারপর reCAPTCHA Android বেছে নিন।
    • প্যাকেজ: এই API কী ব্যবহার করে এমন প্রতিটি অ্যাপের প্যাকেজের নাম দিন। কোনও অ্যাপকে API ব্যবহার করতে হলে, আপনি যে প্যাকেজের নাম লিখবেন সেটি অবশ্যই অ্যাপের প্যাকেজের নামের সাথে হুবহু মিলতে হবে। প্রতিটি প্যাকেজের নাম আলাদা আলাদা লাইনে লিখুন।
    • মালিক: আপনার সংস্থার এমন প্রত্যেক ব্যক্তির জন্য একটি করে ইমেল আইডি যোগ করুন যারা আপনার অ্যাপের 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() মেথড কল করতে হবে। সাধারণত, এই পদ্ধতিটি ব্যবহারকারীর আপনার অ্যাক্টিভিটিতে কোনও UI এলিমেন্ট, যেমন কোনও বোতাম বেছে নেওয়ার সাথে সম্পর্কিত।

আপনার অ্যাপে verifyWithRecaptcha() মেথড ব্যবহার করার সময়, আপনাকে অবশ্যই নিম্নলিখিত কাজগুলি করতে হবে:

  • প্যারামিটার হিসেবে আপনার API সাইট কী পাস করুন।
  • যাচাইকরণ অনুরোধ টাস্কের সম্ভাব্য ফলাফলগুলি হ্যান্ডেল করতে onSuccess() এবং onFailure() মেথড ওভাররাইড করুন। বিশেষ করে, API যদি 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}")
                }
            })
}

জাভা

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 চ্যালেঞ্জ সম্পূর্ণ করেছেন বলে ধরে নেওয়া হয়। তবে, এই পদ্ধতিটি শুধুমাত্র এটি নির্দেশ করে যে ব্যবহারকারী CAPTCHA সঠিকভাবে সমাধান করেছেন। আপনাকে এখনও ব্যাকএন্ড সার্ভার থেকে ব্যবহারকারীর রেসপন্স টোকেন যাচাই করতে হবে।

ব্যবহারকারীর রেসপন্স টোকেন কীভাবে যাচাই করতে হয় তা জানতে, ব্যবহারকারীর রেসপন্স যাচাই করা দেখুন।