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

سلام دوستان امیدوارم حالتان خوب و سلامت باشید در این سری از آموزش برنامه نویسی اندروید به آموزش reCAPTCHA در برنامه نویسی اندروید می پردازیم شاید reCAPTCHA گوگل را در وب سایت ها و اپلیکیشن های خارجی دیده باشید که عملیات احراز هویت کاربر (User Authentication) را انجام میدهد و با الگوریتم های مختلف بررسی می کند که کاربر آیا واقعا شخص حقیقی است یا اینکه یک ربات است در ادامه با ما همراه باشید.
 

نحوه کار به چه شکل است ؟

دو کلید به نام Secret Key و Site Key وجود دارد که در ادامه میگیم چگونه این رو به دست بیارید این دو کلید Secret key باید در سرور شما باشد و Site Key در اپلیکیشن شما اگر Secret Key شما لو برود به راحتی می توانند آن را دور بزنند. هر زمانی که یک کاربر request میزند کلید site key به سمت سرور ارسال می شود و یک token برای آن شخص ایجاد می شود و اگر گوگل به گونه ای تشخیص دهد که کاربر ربات نیست هیچ کاری نباید کاربر انجام دهد در صورتی که نتواند شخص را بررسی کند از کاربر می خواهد که یک عملیات را انجام دهد.
 
وارد لینک زیر شوید و اپلیکیشن خود را ثبت کنید.

Label را برابر با اپلیکیشن خود قرار دهید. نوع reCAPTCHA را برابر با اندروید قرار دهید و در بخش 
در ادامه در یک نمونه مثال کد های Site Key و Secret هست که آنها را بردارید در ادامه با آنها کار داریم.
باید سه کتاب خانه را به پروژه اضافه کنیم.
پس وارد فایل Build.Gradle از نوع Module شده سپس سه خط زیر را اضافه کنید.

پروژه را sync کنید قند شکن فراموش نشه !
برای تنظیم قندشکن از لینک زیر می توانید کمک بگیرید.

لینک آموزش

قبل از اینکه به سراغ کد اندروید برویم باید سمت سرور یک rest api درست کنیم پس برای اینکار یک فایل php به نام google-recaptcha-verfication.php ایجاد می کنیم و کدهای زیر را در آن قرار میدهیم. باید Curl شما فعال باشد (بیشتر مواقع فعال است)

در بالا یک متغیر به نام secretKey داریم که باید شما secretKey خودتان را در آن قرار دهید. ابتدا بررسی می کنیم داده که شما به سمت این url پست (post) کردید خالی نباشه سپس به گوگل یک request میزنیم گوگل یک json برای ما برمی گرداند اگر برابر با success بود ما یک jsonarray چاپ می کنیم تا در برنامه بررسی کنیم عملیات موفق بوده یا خیر.
وارد AndroidManifest.xml شده و دسترسی زیر را اضافه کنید.

یک کلاس از نوع singleton باید ایجاد کنید تا request مربوط به volley در آن انجام شود یک فایل به نام MyApplication.java ایجاد کرده و کدهای زیر را در آن قرار دهید.

کلاس بالا همانطور که گفتیم عملیات request را برای ما انجام میدهد بعد از اینکه کلاس بالا را ساختید وارد AndroidManifest.xml شده و خط زیر را به تگ application اضافه کنید.

فایل Colors.xml باز کرده و رنگ های زیر را به آن اضافه کنید.

یک فایل به نام dimens.xml در values ایجاد کرده و کدهای زیر را در آن قرار دهید.

فایل strings.xml را باز کرده و کدهای زیر را در آن قرار دهید.

یک لایه به نام activity_main.xml ایجاد کرده و کدهای زیر را در آن قرار دهید.

یک لایه دیگر به نام content_main.xml ایجاد می کنیم این لایه در لایه قبلی include شده است.

و در نهایت MainActivity.java همانند زیر می شود.

در بالا یک متغیر به نام SAFETY_NET_API_SITE_KEY داریم که شما باید در آن Site Key خود را قرار دهید.
URL_VERIFY_ON_SERVER باید url سرور خودتان را قرار دهید (همان فایل php) در ادامه با استفاده از volley به سمت سرور یک داده رو post می کنیم و سمت سرور بررسی انجام می شود.
از متود SafetyNet برای انجام تایید هویت استفاده می کنیم بگونه این کلاس منتظر می ماند تا request از سرور برگردد سپس عملیات checking بررسی می شود.
 
 
موفق باشید.

مطالعه بیشتر