SafetyNet reCAPTCHA API

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

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

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

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

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

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

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

reCAPTCHA কী পেয়ার নিবন্ধন করুন

SafetyNet reCAPTCHA API-এর সাথে ব্যবহারের জন্য একটি কী পেয়ার রেজিস্টার করতে, reCAPTCHA অ্যান্ড্রয়েড সাইনআপ সাইটে যান, তারপর নিচের ধাপগুলো ক্রমানুসারে সম্পন্ন করুন:

  1. প্রদর্শিত ফর্মে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

    • লেবেল: আপনার চাবির জন্য একটি অনন্য লেবেল। সাধারণত, আপনি আপনার কোম্পানি বা সংস্থার নাম ব্যবহার করেন।
    • reCAPTCHA প্রকার: reCAPTCHA v2 নির্বাচন করুন, তারপর reCAPTCHA Android
    • প্যাকেজসমূহ: এই এপিআই কী ব্যবহারকারী প্রতিটি অ্যাপের প্যাকেজ নাম প্রদান করুন। কোনো অ্যাপকে এপিআই ব্যবহার করতে হলে, আপনার দেওয়া প্যাকেজ নামটি অবশ্যই অ্যাপটির প্যাকেজ নামের সাথে হুবহু মিলতে হবে। প্রতিটি প্যাকেজ নাম আলাদা লাইনে লিখুন।
    • মালিকগণ: আপনার প্রতিষ্ঠানের প্রত্যেক ব্যক্তির জন্য একটি ইমেল ঠিকানা যোগ করুন, যারা আপনার অ্যাপের reCAPTCHA মূল্যায়নগুলো পর্যবেক্ষণ করেন।
  2. reCAPTCHA পরিষেবার শর্তাবলী গ্রহণ করুন চেকবক্সটি নির্বাচন করুন।

  3. মালিকদের কাছে সতর্কতা পাঠান: আপনি যদি reCAPTCHA API সম্পর্কে ইমেল পেতে চান তবে এই চেকবক্সটি নির্বাচন করুন, তারপর 'জমা দিন' (Submit) বোতামে ক্লিক করুন।

  4. পরবর্তী পৃষ্ঠায়, আপনার পাবলিক এবং প্রাইভেট কী যথাক্রমে 'সাইট কী' এবং 'সিক্রেট কী'-এর অধীনে প্রদর্শিত হবে। আপনি ভেরিফাই রিকোয়েস্ট পাঠানোর সময় সাইট কী ব্যবহার করেন এবং ইউজার রেসপন্স টোকেন ভ্যালিডেট করার সময় সিক্রেট কী ব্যবহার করেন।

SafetyNet API নির্ভরতা যোগ করুন

reCAPTCHA API ব্যবহার করার আগে, আপনার প্রজেক্টে SafetyNet API যোগ করুন। আপনি যদি Android Studio ব্যবহার করেন, তাহলে এই ডিপেন্ডেন্সিটি আপনার অ্যাপ-লেভেলের Gradle ফাইলে যোগ করুন। আরও তথ্যের জন্য, SafetyNet API সেটআপ দেখুন।

reCAPTCHA API ব্যবহার করুন

এই অংশে বর্ণনা করা হয়েছে কীভাবে reCAPTCHA API কল করে একটি CAPTCHA যাচাইকরণ অনুরোধ পাঠানো যায় এবং ব্যবহারকারীর প্রতিক্রিয়া টোকেন গ্রহণ করা যায়।

যাচাই অনুরোধ পাঠান

SafetyNet reCAPTCHA API চালু করতে, আপনাকে verifyWithRecaptcha() মেথডটি কল করতে হবে। সাধারণত, এই মেথডটি আপনার অ্যাক্টিভিটিতে ব্যবহারকারীর কোনো UI এলিমেন্ট, যেমন একটি বাটন, নির্বাচন করার সাথে সম্পর্কিত।

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

  • আপনার এপিআই সাইট কী একটি প্যারামিটার হিসেবে প্রদান করুন।
  • ভেরিফিকেশন রিকোয়েস্ট টাস্কের উভয় সম্ভাব্য ফলাফল হ্যান্ডেল করার জন্য onSuccess() এবং onFailure() মেথড দুটি ওভাররাইড করুন। বিশেষ করে, যদি API onFailure() মেথডে ApiException এর একটি ইনস্ট্যান্স পাস করে, তাহলে getStatusCode() ব্যবহার করে পাওয়া যায় এমন প্রতিটি সম্ভাব্য স্ট্যাটাস কোড আপনাকে হ্যান্ডেল করতে হবে।

নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে এই মেথডটি কল করতে হয়:

কোটলিন

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-টি সঠিকভাবে সমাধান করেছেন। আপনাকে এখনও আপনার ব্যাকএন্ড সার্ভার থেকে ব্যবহারকারীর রেসপন্স টোকেনটি ভ্যালিডেট করতে হবে।

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