حتما توی کار با وبسایت ها و برنامه های اندروید ، با گزینه ای رو به رو شدید تحت عنوان ” من ربات نیستم ” ، که واسه ادامه کارتون باید اون تیک رو فعال کنید و بعد از انتخاب هم شاید یه سوالی ازتون بپرسه شایدم نپرسه ، به هر حال اون تیک ، تیک تایید هویت هست ، یعنی اینکه یه کاربر واقعی داره با سیستم کار میکنه و نه یه ربات یا اسکریپت . اگه ما بخوایم از reCAPTCHA توی برنامه اندرویدمون استفاده کنیم ، میتونیم از این آموزش استفاده کنیم . بهتره اول یه توضیح راجع به کل فرایند تایید هویت بدم . اگه ما یه برنامه ارسال نظر داشته باشیم ، و میخوایم کسی که نظر رو ارسال میکنه یه شخص واقعی باشه و نه یه روبات یا حتی یه آدم مزاحم ! میایم روال کار رو براش سخت میکنیم ، با reCAPTCHA . فرض کنیم برنامه ما یه سمت سرور هم داره . این وسط reCAPTCHA میاد و به عنوان واسط عمل میکنه . یعنی وقتی کاربر میخواد نظر ارسال کنه و ما ازش بخوایم تیک مربوط به ” من ربات نیستم ” رو هم بزنه ، برنامه اندروید میاد یه درخواست میفرسته به سرور reCAPTCHA و میگه به یه تایید هویت نیاز دارم . سرور reCAPTCHA یه شناسه به برنامه اندروید میفرسته و میگه از این شناسه استفاده کن . اپ اندروید میاد اون شناسه رو ، بسته به اینکه چی باشه ( مثلا انتخاب ماشین از میون چندتا عکس ) به سمت سرور برنامه مون میفرسته و سرور وقتی دریافتش کرد اون شناسه رو میفرسته واسه سرور reCAPTCHA و میگه کاربر اپ عملیات انتخاب عکس ماشین از میون چندتا عکس رو انجام داده ، ببین شناسه با شناسه اصلی یکی هست یا نه . اگه کاربر عکس ها رو درست انتخاب کرده باشه ، و شناسه یکی باشه ، سرور reCAPTCHA به سمت سرور اپ میگه آره یکی هست ، و بعد هم سمت سرور اپ به اپ اندروید میگه اوکی ! همه چی ردیفه ، تو ربات نیستی ! و بعد عملیات تایید هویت انجام میشه . البته مشخصه که کل این عملیات با سرعت خیلی بالایی انجام میگیره . 

واسه استفاده از reCAPTCHA باید اول توی سایتش ، با استفاده از حساب کاربری گوگل خودتون ، یا همون جیمیل ، وارد بشید . با این آدرس وقتی وارد شدید ، باید برنامه اندروید خودتون رو اضافه کنید که توی قسمت label یه اسم دلخواه یا یه توضیح مختصر از برنامه تون مینویسید و از قسمت type of reCaptcha گزینه reCaptcha Android رو انتخاب میکنید و مهم ترین قسمت package name هست که باید اسم پکیجی رو وارد کنید که توی اندروید استودیو ساختید . و بعد از تایید قوانین و مقررات ، برنامه ساخته میشه و بهتون Site Key و Secret  رو نشون میده که جلوتر باید ازشون استفاده کنیم . 

یه پروژه جدید توی اندروید استودیو میسازیم و کتابخانه های لازم رو به فایل app/build.gradle اضافه میکنیم : 

توی این آموزش میخوایم کاربر واسه ما نظر ارسال کنه و وقتی روی دکمه ارسال نظر رو انتخاب کرد ، پنجره تایید هویت واسش باز بشه . خوب ، کدهای لایه گرافیکیمون : 

گفتیم که وقتی توی سایت reCAPTCHA پروژه مون رو اضافه کردیم یه Site key بهمون میده با یه Secret key . ما میایم Site key رو توی سمت اندروید استفاده میکنیم و Secret key رو باید سمت سرور خودمون استفاده کنیم . ما میایم و سمت سرور رو با استفاده از php کد میزنیم . این کدهای سمت سرور هست : 

که توی کدهای بالا و خط ۷ ، از Secret key استفاده کردیم . فایل php بالا رو ، روی هاست یا سروس خودمون آپلود میکنیم و بعد باید آدرسش رو به سمت اندروید بدیم . 

حالا توی اندروید استودیو و کلاس MainActivity میام کدهای پایین رو وارد میکنیم : 

توی خط ۴۳ از SITE KEY استفاده کردیم و خط ۴۶ هم آدرس فایل php رو دادیم . عملیات اصلی توی کدهای بالا توسط تابع verifyTokenOnServer توی خط ۱۱۷ اتفاق میفته که کاربر سوال امنیتی رو پاسخ داده و پاسخ توسط فایل php بررسی شده و به سرور reCAPTCHA ارسال شده و حالا چک میکنه که جواب درست هست یا نه ، که اگه درست باشه کاری که توی حلقه if توی خط ۱۳۲ گفتیم انجام میگیره ، اگرم درست انتخاب نکرده باشیم پاسخ امنیتی رو ، بسته به پیغام خطایی که توی فایل php نوشتیم ، توسط پیغام toast به کاربر نشون داده میشه اون خطا . وقتی برنامه رو اجرا کنیم : 

خوب ، امیدوارم که از این آموزش هم خوشتون اومده باشه و توی زندگیتون با ربات های آدم نما اصن برخورد نکنید ! سورس رو هم میتونید دانلود کنید : 

دانلود سورس

آموزش استفاده از reCAPTCHA در اندروید

مجتبی صابری


همه عشقم برنامه نویسی هست | t.me/kotlin9


پیمایش نوشته


2 دیدگاه در “آموزش استفاده از reCAPTCHA در اندروید

  1. سلام
    مجتبی جان فدات شم خوبی.
    مجتبی کارت عالیه.
    میخوام یه لطفی کنی که آموزش امنیت اپلیکیشن رو در مقابل هکرها و برنامه نویسای دیگه قرار بدی که نتونن کدهامون روبخونن. متشکرم

    1. سلام . ممنون عزیز .
      خود اندروید استودیو تنظیمات امنیت رو هم در نظر گرفته موقع خروجی گرفتن ، ولی باشه ، ایشالا در آینده یه پست میذارم در مورد امنیت و افزایش امنیت برنامه های اندروید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *