Android 防止機器人驗證 Google圖形驗證 reCAPTCHA
Google在(6/9)釋出了支援Android平台的reCAPTCHA API,Google reCAPTCHA是Google開發的防堵機器人驗證API,原本是設計給網頁使用,後來發現它也可以在APP上使用,這樣在一些例如申請帳號的流程上就能加上它。
文章目錄
1.reCAPTCHA官網申請金鑰
官方網站
https://www.google.com/recaptcha/admin
選擇方式(套件是你的包名)
待會要輸入的金鑰
金鑰價格計算
2.導入Safetynet
dependencies {
implementation 'com.google.android.gms:play-services-safetynet:17.0.1'
}
3.布局&方法介紹
布局
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:onClick="check"
android:id="@+id/btn_robot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="132dp"
android:text="驗證"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="92dp"
app:layout_constraintEnd_toEndOf="@+id/btn_robot"
app:layout_constraintStart_toStartOf="@+id/btn_robot"
app:layout_constraintTop_toBottomOf="@+id/btn_robot" />
</androidx.constraintlayout.widget.ConstraintLayout>
方法介紹
添加金鑰
verifyWithRecaptcha("6LfnVckbAAAAAHdhba1jkIZXymHK14MlOn03V4st")
4.程式碼範例
import android.os.Bundle
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.google.android.gms.safetynet.SafetyNet
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun check(view: View) {
val result: TextView = findViewById(R.id.result)
SafetyNet.getClient(this)
.verifyWithRecaptcha("6LfnVckbAAAAAHdhba1jkIZXymHK14MlOn03V4st")
.addOnSuccessListener { response ->
if (response.tokenResult?.isNotEmpty() == true) {
result.text = "認證成功"
}
}.addOnFailureListener {
result.text = "認證失敗"
}
}
}