Uzun yıllardır oluşturulan web site, mobil veya masaüstü yazılımları için güvenlik önlemlerinin alınması her zaman önemli ve hassas bir konu olmuştur.
Google’da bundan 10 yıl önce reCAPTCHA teknolojisiyle web sayfalarında güvenlik önlemini almayı başlamıştı. ReCAPTCHA, forumlarda, blogların yorum bölümlerinde, facebook gibi sosyal ağlarda spam yazılarını önlemek için kullanılan bir işlemdir. ReCAPTCHA ihtiyaç duyulmasının en büyük nedenlerinden biride, Vandalist saldırılardan web servisleri korumasıdır.
Bu makalemde ise Google’ın yeni çıkarmış olduğu reCAPTCHA Android API’yi bir Android uygulamasında kullanmayı örnekleyeceğim.
ReCAPTCHA API, mobil cihazlarda aerodinamik bir kullanıcı deneyimi sağlamak için insana ve robotlara ayrı ayrı bilgi verebilmektedir. Sahnenin arkasında risk analizi çalıştıran ve milyonlarca insanın her gün sıfır tıklama ile geçmesine olanak tanıyan en yeni görünmez reCAPTCHA teknolojisini kullanımımıza sunmuştur. Artık mobil kullanıcılar, spam ve istismardan uzak dururken, kesintiye uğramaksızın uygulamanın keyfini çıkarabilirler.
Şimdi ise makale için hazırladığım örneğin ekran görüntüsüne bakalım.
Gördüğünüz üzere, kullanıcı login işlemi yaparken direk reCAPTCHA ile doğrulama işlemimizi yapabildik. Birkaç adımda reCAPTCHA API’yi uygulamamızda nasıl kullanacağımızı görelim.
1-Android Uygulamaya Kütüphane Yükleme
Android Sdk Manager’ı açtıktan sonra Sdk Tools tabında bulunan Google Repository seçerek bu özeliği yükleyelim. Sonrasında Android Studio Idesi ile minSdk versiyonu 14 olan bir proje oluşturuyoruz. Oluşturduğum projemin app dizinin altındaki build.gradle dosyasını açıyoruz. Dependencies kod bloklarının arasına aşağıdaki kodları yerleştirerek reCAPTCHA kütüphanesini yüklüyoruz.
1 2 3 4 |
compile 'com.google.android.gms:play-services-base:11.0.2' compile 'com.google.android.gms:play-services-basement:11.0.2' compile 'com.google.android.gms:play-services-safetynet:11.0.2' compile 'com.google.android.gms:play-services-tasks:11.0.2' |
2- Key Değerlerinin Elde Edilmesi
Google reCAPTCHA API’nin sitesine gmail hesabınızla giriş yapmalısınız. Bu sitede Package Names alanına uygulamanızın paket ismini, Label alanına da bir başlık girmelisiniz. reCAPTCHA servis kullanımını onaylamak için tik alanınız seçtikten sonra kayıt olmalısınız.
Bu işlemi yaptığınızda site size, uygulamanızda reCAPTCHA API’sini tanıtabilmek için SecretKey ve SiteKey adında anahtar bilgiler verecektir. Biz bu bilgileri Java kodlarımızda kullanacağız.
3- Java Kodları
Kodda yazdığım açıklamaları biraz inceleyelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.common.api.Status; import com.google.android.gms.safetynet.SafetyNet; import com.google.android.gms.safetynet.SafetyNetApi; public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ // Google ReCAPTCHA sistemine giriş yapmanızla verilen key değerlerini buraya giriyoruz final String SiteKey = "6Lcz4CgUAAAAAGHlQtUMB8VdijHSSS1fh6SBKrNc\n"; final String SecretKey = "6Lcz4CgUAAAAAOLQHCtoMo7kSeusWDOtzKpSS8bE"; private GoogleApiClient mGoogleApiClient; Button btnRequest; TextView tvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_main); tvResult = (TextView)findViewById(R.id.result); btnRequest = (Button)findViewById(R.id.request); btnRequest.setOnClickListener(RqsOnClickListener); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(SafetyNet.API) .addConnectionCallbacks(MainActivity.this) .addOnConnectionFailedListener(MainActivity.this) .build(); mGoogleApiClient.connect(); } View.OnClickListener RqsOnClickListener = new View.OnClickListener() { @Override public void onClick(View view) { tvResult.setText(""); SafetyNet.SafetyNetApi.verifyWithRecaptcha(mGoogleApiClient, SiteKey) .setResultCallback(new ResultCallback<SafetyNetApi.RecaptchaTokenResult>() { @Override public void onResult(SafetyNetApi.RecaptchaTokenResult result) { Status status = result.getStatus(); if ((status != null) && status.isSuccess()) { tvResult.setText("Doğrulamanız basarılı..."); // Kullanıcıyı tanıyıp robot olmadıgını dönen reCAPTCHA servisinin basarılı oldugu //bölüm.Kullanıcının geri donen token bilgisini almak icinde // result.getTokenResult() kullanmalısınız //Kullanıcının geri donen token bilgisini boş olup olmadgı kontrolu if (!result.getTokenResult().isEmpty()) { //Token deger dönüyor }else{ //Token deger dönmuyor ... } } else { Log.e("MY_APP_TAG", "Error occurred " + "when communicating with the reCAPTCHA service."); // status.getStatusCode() kodunu kullanarak reCAPTCHA servisinden dönen hataları tespit edebilirsiniz } } }); } }; @Override public void onConnected(@Nullable Bundle bundle) { Toast.makeText(this, "onConnected()", Toast.LENGTH_LONG).show(); } @Override public void onConnectionSuspended(int i) { Toast.makeText(this, "onConnectionSuspended: " + i, Toast.LENGTH_LONG).show(); } @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { Toast.makeText(this, "onConnectionFailed():\n" + connectionResult.getErrorMessage(), Toast.LENGTH_LONG).show(); } } |
4- Xml Kodları
Burda hazırlamış olduğum basit form arayüzüdür. Siz dilerseniz kendiniz sadece bir buton tanımlayarak, Java tarafında onclick event inde reCAPTCHA metodlarını kullanabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Email" android:inputType="textPersonName" /> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Şifre" android:inputType="textPersonName" /> <Button android:id="@+id/request" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Login" /> <TextView android:paddingTop="15dp" android:id="@+id/result" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> |
Pour les clients réguliers ou contactez votre médecin ou votre pharmacien local alors-enlignepascher.com et de maintenir un pénis en érection dur adapté à l’activité sexuelle. De maintenir une érection suffisamment longtemps pour permettre une activité sexuelle.