شروحات

دمج Android Google reCAPTCHA في تطبيق Android

دمج Android Google reCAPTCHA في تطبيق Android

أثناء تقديم بعض النماذج أو أي نوع آخر من المعلومات على موقع ويب ، ربما لاحظت وجود بعض كلمة التحقق التي يتعين عليك ملءها لإرسال التفاصيل. قد يكون هذا captcha على شكل صورة لها بعض الأرقام وعليك فقط إدخال هذه الأرقام. يمكن أن يكون اختبار captcha الآخر صورة لشيء ما وعليك تحديد ذلك في تلك الصورة بالذات. ولكن هل فكرت في سبب دمج هذه الكابتشا أو وضعها على مواقع الويب؟ السبب بسيط جدا. للتحقق من صحة المستخدم ، يتم استخدام هذه الكابتشا للعثور على ما إذا كان المستخدم إنسانًا أم لا. في الوقت الحاضر ، يمكن للعديد من برامج الروبوت الذكية أن تملأ المعلومات في نموذج ، ولتجنب مثل هذا النوع من الحالات ، نستخدم كلمة التحقق في موقعنا أو التطبيق.
في هذه المدونة ، سنتعرف على كيفية تطبيق اختبار CAPTCHA باستخدام reCAPTCHA من Google في تطبيق Android الخاص بنا. لذلك دعونا نبدأ.

SafetyNet reCAPTCHA API

توفر SafetyNet مجموعة من الخدمات وواجهات برمجة التطبيقات التي يمكن استخدامها لتأمين وحماية تطبيق المحمول الخاص بك من تهديدات الأمان مثل المستخدمين المزيفين ، والعبث بالأجهزة ، وعناوين URL السيئة ، وما إلى ذلك. تشمل إحدى الخدمات دعم reCAPTCHA الذي يحمي المستخدم من حركة المرور الضارة .
فيما يلي مقدمة عن reCAPTCHA موجودة على موقع Android:

reCAPTCHA هي خدمة مجانية تستخدم محركًا متقدمًا لتحليل المخاطر لحماية تطبيقك من الرسائل غير المرغوب فيها والإجراءات المسيئة الأخرى. إذا اشتبهت الخدمة في أن المستخدم الذي يتفاعل مع تطبيقك قد يكون روبوتًا بدلاً من إنسان ، فإنه يقدم اختبار CAPTCHA الذي يجب على الإنسان حله قبل أن يتمكن تطبيقك من الاستمرار في التنفيذ.

ولكن لاستخدام minSdkVersion الخاص بك يجب أن يكون 14 أو أعلى.

العمل

يتضمن عمل reCAPTCHA من Google بعض مكالمات الشبكة ، مثل الاتصال من تطبيق Android الخاص بك إلى خادم SafetyNet ، ثم خادم SafetyNet إلى تطبيق Android الخاص بك ، وأخيراً من تطبيق Android الخاص بك إلى خادمك. لذلك ، فيما يلي الخطوات المتضمنة في عمل reCAPTCHA من Google في تطبيق Android الخاص بك:
  1. أولاً ، يجب عليك الحصول على مفتاح الموقع والمفتاح السري من موقع reCAPTCHA . سيتم استخدام مفتاح الموقع في تطبيق Android الخاص بك ويجب وضع المفتاح السري في خادمك.
  2. باستخدام مفتاح “الموقع” ، سيتم إنشاء reCAPTCHA ويجب على المستخدم إكمال التحدي reCAPTCHA إذا لزم الأمر.
  3. بعد إنشاء reCAPTCHA ، سيتواصل التطبيق مع خادم captcha وسيُرجع رمز استجابة المستخدم باستخدام مفتاح الموقع الخاص بك.
  4. الآن سيرسل تطبيق Android الخاص بك الرمز المميز إلى الخادم الخاص بك وسيرسل الخادم الرمز المميز إلى خادم reCAPTCHA مرة أخرى ولكن باستخدام المفتاح السري. سيرسل خادم reCAPTCHA حالة النجاح إلى الخادم الخاص بك والخادم في المقابل يرسل حالة النجاح إلى تطبيق Android الخاص بك.
يمكن رؤية الملخص بأكمله من الصورة أدناه:

قم بإنشاء مفتاح موقع reCAPTCHA والمفتاح السري

لذلك ، رأينا تدفق reCAPTCHA من Google في تطبيق Android. خطوتنا التالية هي لدمج reCAPTCHA هذا في تطبيقنا. لذلك ، نحتاج أولاً إلى إنشاء مفتاح موقع ومفتاح سري من موقع reCAPTCHA. اتبع الخطوات التالية:
  1. زيارة موقع reCAPTCHA .
  2. أدخل التسمية لتحديد مفتاحك. يمكنك إدخال أي اسم هنا.
  3. بعد إدخال التسمية ، حدد نوع reCAPTCHA الذي تريد إضافته في تطبيقك. سأستخدم reCAPTCHA v2 وبعد ذلك reCAPTCHA Android.
  4. أدخل اسم حزمة مشروع Android الخاص بك.
  5. أخيرًا ، حدد قبول شروط وأحكام reCAPTCHA وإرسال التنبيهات إلى أصحابها.
  6. انقر فوق إرسال
فيما يلي شاشة موقع reCAPTCHA:
بعد تقديم النموذج ، سوف تحصل على مفتاح موقع واحد ومفتاح سري واحد. انسخ المفاتيح وقم بتخزينها في مكان ما ، وسوف نستخدم هذه المفاتيح في تطبيقنا.

إعداد مشروع Android لـ reCAPTCHA

إنشاء مشروع جديد في استوديو أندرويد. هنا ، سوف أستخدم قالب BasicActivity.
بعد إنشاء مشروع Android ، فإن خطوتنا التالية تتمثل في إضافة تبعية reCAPTCHA في ملف build.gradle . لذلك ، أضف السطر التالي في مشروعك:
//dependency for the reCAPTCHA (safetynet)
implementation 'com.google.android.gms:play-services-safetynet:17.0.0'
//dependency for fast networking for networking
implementation 'com.amitshekhar.android:android-networking:1.0.2'
بعد إضافة التبعيات ، تتمثل مهمتنا التالية في إضافة إذن عبر الإنترنت إلى تطبيقنا. أضف السطر التاليAndroidManifest.xml أسفل علامة البيان:
<uses-permission android:name="android.permission.INTERNET"/>
ولإضافة مكتبة الشبكات السريعة في تطبيقك ، في صف التطبيق الخاص بك ،
AndroidNetworking.initialize(applicationContext);
بمجرد الانتهاء من ذلك باستخدام الجزء الخاص بالإذن والتبعيات ، فإن خطوتنا التالية هي إنشاء واجهة مستخدم للمشروع. هنا ، لدينا زر واحد فقط سيدعو الحدث reCAPTCHA عند النقر عليه. لذلك ، سيكون رمز ملف activity_main.xml :
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="reCAPTCHA example"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp"
android:id="@+id/textView"
android:textSize="32sp"/>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click for CAPTCHA"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/textView" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp"/>

</androidx.constraintlayout.widget.ConstraintLayout>
الآن ، أنشأنا جزء واجهة المستخدم من تطبيقنا. دعنا نكتب رمز reCAPTCHA في ملف MainActivity.kt .
في ملف MainActivity. خادم reCAPTCHA عن طريق الخادم الخاص بنا جنبا إلى جنب مع المفتاح السري ثم إرسال رسالة النجاح مرة أخرى إلى التطبيق المحمول. سيكون رمز ملف MainActivity.kt :
class MainActivity : AppCompatActivity(), View.OnClickListener {

var TAG = "MainActivity"
lateinit var btnverifyCaptcha: Button
private var SITE_KEY = "YOUR_SITE_KEY"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnverifyCaptcha = findViewById(R.id.button)
btnverifyCaptcha.setOnClickListener(this)
}

override fun onClick(view: View) {
SafetyNet.getClient(this).verifyWithRecaptcha(SITE_KEY)
.addOnSuccessListener(this) { response ->
if (!response.tokenResult.isEmpty()) {
handleVerify(response.tokenResult)
}
}
.addOnFailureListener(this) { e ->
if (e is ApiException) {
Log.d(TAG,("Error message: " + CommonStatusCodes.getStatusCodeString(e.statusCode)))
} else {
Log.d(TAG, "Unknown type of error: " + e.message)
}
}
}

protected fun handleVerify(responseToken: String) {
//it is google recaptcha siteverify server
//you can place your server url
val url = "https://www.google.com/recaptcha/api/siteverify"
AndroidNetworking.get(url)
.addHeaders("token", responseToken)
.setTag("MY_NETWORK_CALL")
.setPriority(Priority.LOW)
.build()
.getAsJSONArray(object : JSONArrayRequestListener() {
fun onResponse(response: JSONArray) {
// do anything with response
}

fun onError(error: ANError) {
// handle error
}
})
}
}
أخيرًا ، قم بتشغيل التطبيق الخاص بك وانقر فوق الزر الذي يقول “انقر فوق CAPTCHA”.

خطأ API شائع reCAPTCHA

  1. RECAPTCHA_INVALID_SITEKEY: إذا لم تكن قد سجلت مفتاح API بشكل صحيح. مفتاح الموقع الخاص بك غير صالح.
  2. RECAPTCHA_INVALID_KEYTYPE: نوع المفتاح غير صالح. إنشاء مفتاح reCAPTCHA جديد.
  3. RECAPTCHA_INVALID_PACKAGENAME: اسم الحزمة الذي أدخلته أثناء إنشاء واجهة برمجة التطبيقات (API) ليس هو نفسه اسم حزمة التطبيق. أضف اسم الحزمة الصحيح.
  4. NETWORK_ERROR: إذا لم يكن هناك اتصال بالإنترنت ، فسيتم مواجهة هذا الخطأ.
  5. UNSUPPORTED_SDK_VERSION: ربما كنت تستخدم مستوى API 13 أو أقل. تغيير MinSdkVersion الخاص بك إلى 14 أو أعلى.

استنتاج

في هذه المدونة ، تعلمنا كيفية استخدام reCAPTCHA من Google في تطبيق Android الخاص بنا. لاستخدام reCAPTCHA في تطبيقنا ، نحتاج إلى الحصول على مفتاح موقع واحد ومفتاح سري واحد وبعد ذلك ، نطلب الحصول على كلمة التحقق من خادم reCAPTCHA. بمجرد أن نحصل على reCAPTCHA ويدخل المستخدم في captcha ، نرسل القيمة المدخلة إلى خادم reCPATCA ونحصل على الرمز المميز captcha. يتم إرسال هذا الرمز المميز إلى خادمنا وخادمنا إلى جانب المفتاح السري يرسل الرمز إلى خادم reCAPTCHA مرة أخرى. بعد ذلك ، نحصل على بعض رسائل النجاح ويتم نقل هذه الرسالة إلى تطبيق Android الخاص بنا.
آمل أن تستمتع هذا بلوق.
استمر في التعلم 🙂
فريق MindOrks!

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button