SafetyNet hizmeti, uygulamanızı kötü amaçlı trafikten korumak için kullanabileceğiniz bir reCAPTCHA API'si içerir.
reCAPTCHA, uygulamanızı spam'den ve diğer kötüye kullanım amaçlı işlemlerden korumak için gelişmiş bir risk analizi motoru kullanan ücretsiz bir hizmettir. Hizmet, uygulamanızla etkileşim kuran kullanıcının insan yerine bot olabileceğinden şüphelenirse uygulamanızın çalışmaya devam edebilmesi için bir kişinin çözmesi gereken bir CAPTCHA sunar.
Bu belgede, SafetyNet'teki reCAPTCHA API'nin uygulamanıza nasıl entegre edileceği açıklanmaktadır.
Ek hizmet şartları
reCAPTCHA API'ye erişerek veya API'yi kullanarak Google API'leri Hizmet Şartları'nı ve aşağıdaki reCAPTCHA Hizmet Şartları'nı kabul etmiş olursunuz. API'lere erişmeden önce lütfen geçerli tüm hüküm ve politikaları okuyup anlayın.
reCAPTCHA Hizmet Şartları
reCAPTCHA API'nin cihaz ve uygulama verileri ile bütünlük kontrolleri sonuçları gibi donanım ve yazılım bilgilerini toplayıp söz konusu verileri analiz için Google'a göndererek çalıştığını anlayıp onayladığınız varsayılır. Google API'leri Hizmet Şartları Bölüm 3(d) uyarınca, API'leri kullanmanız halinde bu verilerin toplanıp Google'la paylaşılması için gerekli her türlü bildirimi yapma veya onayı verme sorumluluğunun tarafınıza ait olduğunu kabul etmiş olursunuz.reCAPTCHA anahtar çifti kaydetme
SafetyNet reCAPTCHA API ile kullanılmak üzere bir anahtar çifti kaydetmek için reCAPTCHA Android kayıt sitesine gidin ve aşağıdaki adımları uygulayın:
Görünen formda aşağıdaki bilgileri sağlayın:
- Etiket: Anahtarınız için benzersiz bir etiket. Genellikle şirketinizin veya kuruluşunuzun adını kullanırsınız.
- reCAPTCHA türü: reCAPTCHA s2'yi, ardından reCAPTCHA Android'i seçin.
- Paketler: Bu API anahtarını kullanan her uygulamanın paket adını girin. Bir uygulamanın API'yi kullanabilmesi için girdiğiniz paket adı, uygulamanın paket adıyla tam olarak eşleşmelidir. Her paket adını kendi satırına girin.
- Sahipler: Kuruluşunuzda uygulamanızın reCAPTCHA değerlendirmelerini izleyen her kullanıcı için bir e-posta adresi ekleyin.
reCAPTCHA Hizmet Şartları'nı kabul edin onay kutusunu işaretleyin.
Sahiplere uyarı gönder: reCAPTCHA API hakkında e-posta almak istiyorsanız bu onay kutusunu işaretleyin ve ardından Gönder'i tıklayın.
Ardından görünen sayfada, ortak ve özel anahtarlarınız sırasıyla Site anahtarı ve Gizli anahtar altında görünür. Doğrulama isteğini gönderirken site anahtarını, kullanıcı yanıt jetonunu doğrularken ise gizli anahtarı kullanırsınız.
SafetyNet API bağımlılığını ekleme
reCAPTCHA API'yi kullanmadan önce SafetyNet API'yi projenize ekleyin. Android Studio kullanıyorsanız bu bağımlılığı uygulama düzeyindeki Gradle dosyanıza ekleyin. Daha fazla bilgi için SafetyNet API kurulumu başlıklı makaleyi inceleyin.
reCAPTCHA API'yi kullanma
Bu bölümde, CAPTCHA doğrulama isteği göndermek ve kullanıcı yanıt jetonunu almak için reCAPTCHA API'nin nasıl çağrılacağı açıklanmaktadır.
Doğrulama isteğini gönderme
SafetyNet reCAPTCHA API'yi çağırmak için verifyWithRecaptcha()
yöntemini çağırırsınız. Genellikle bu yöntem, kullanıcının etkinliğinizde bir kullanıcı arayüzü öğesini (ör. düğme) seçmesine karşılık gelir.
Uygulamanızda verifyWithRecaptcha()
yöntemini kullanırken aşağıdakileri yapmanız gerekir:
- API site anahtarınızı parametre olarak iletin.
- Doğrulama isteği görevinin olası iki sonucunu da ele almak için
onSuccess()
veonFailure()
yöntemlerini geçersiz kılın. Özellikle API,onFailure()
içine birApiException
örneği iletirsegetStatusCode()
kullanarak alabileceğiniz her olası durum kodunu işlemeniz gerekir.
Aşağıdaki kod snippet'inde bu yöntemin nasıl çağrılacağı gösterilmektedir:
Kotlin
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}") } }) }
Java
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()); } } }); }
Kullanıcı yanıtı jetonunu doğrulama
reCAPTCHA API, onSuccess()
yöntemini yürüttüğünde kullanıcı CAPTCHA testini başarıyla tamamlamıştır. Ancak bu yöntem yalnızca kullanıcının CAPTCHA'yı doğru çözdüğünü gösterir. Yine de kullanıcının yanıt jetonunu arka uç sunucunuzdan doğrulamanız gerekir.
Kullanıcının yanıt jetonunu nasıl doğrulayacağınızı öğrenmek için Kullanıcı yanıtını doğrulama başlıklı makaleyi inceleyin.