Android CAPTCHA 統合ガイド
製品紹介
| 項目 | 説明 |
|---|---|
| 主な特徴 | 新世代のCAPTCHAで、機械スクリプトによる自動攻撃によるビジネス損失やセキュリティリスクに知的に対応します |
| SDKプライバシーポリシー | ポリシー |
| SDKコンプライアンスガイド | ガイド |
| SDKダウンロードリンク | ダウンロード |
環境要件
| 項目 | リソース |
|---|---|
| 開発ターゲット | Android 5.0+ (minSdk 21) |
| 開発環境 | Android Studio 2020.3.1 Arctic Fox+ |
| ビルドツール | Gradle (Android Gradle Plugin 7+) |
| システム依存関係 | なし |
SDK サードパーティ依存関係 |
なし |
| パッケージ増分 | 検証済み SDK: 60K |
SDK統合
SDKのインポート
.aarファイル(engagelab_captcha_android_vx.y.z.aarを含む)をzipパッケージからプロジェクトのlibsフォルダにドラッグします。.aarファイルをlibsフォルダにドラッグした後、.aarファイルがLibraryに追加されていることを確認してください。プロジェクトのbuild.gradleファイルに以下のコードを追加します:
repositories {
flatDir {
dirs 'libs'
}
}
aarパッケージ依存関係を手動で追加します(AARはサードパーティ依存関係を自動的に含まないため、手動で追加する必要があります):
implementation(name: 'engagelab_captcha_android_vx.y.z', ext: 'aar')
非Kotlinプロジェクトの設定
ルートbuild.gradle設定:
ext.kotlin_version = "1.6.22"
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
モジュールbuild.gradle設定:
apply plugin: 'kotlin-android'
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
kotlinバージョンと競合がある場合は、exclude(group: 'org.jetbrains.kotlin')を使用してkotlin依存関係を除外してください。
権限の追加
<!--必須 - デフォルトで適用-->
<uses-permission android:name="android.permission.INTERNET" />
<!--API 23(含まない)以下との互換性のために宣言が必要(つまり、Android 4.xおよび5.xで動作するアプリケーションはこれを宣言する必要があります) - デフォルトでは適用されません-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
ProGuardルール
SDKのaarパッケージはすでに難読化されています。二重難読化は予期しないエラーを引き起こす可能性があります。デフォルトで、aarパッケージには現在のSDKの難読化設定が含まれており、リモート依存関係またはローカルaarを使用してもSDKが再度難読化されないようにします。aarパッケージを抽出してjarおよびリソースファイルを個別に統合する必要がある場合は、抽出ディレクトリのproguard.txtファイルの内容をアプリケーションのProGuard設定にコピーして、SDKの二重難読化をスキップしてください。
andResを使用してリソースを難読化する場合は、SDKに含まれるリソースを難読化から除外して、リソース不足によるエラーを回避してください。除外設定は以下の通りです:
"R.string.gt4_*",
"R.style.gt4_*",
インターフェース設定
呼び出しロジック
- 初期化の設定
- 検証の開始
- 検証コールバックの取得
- リソースの破棄
行動検証については、製品構造プロセスを参照してください。最初にバックエンドで対応するサーバーサイドインターフェースを設定し、EngageLab管理コンソールから取得した
captchaIdとKeyを設定する必要があります。
初期化
SDKの初期化設定は、onCreateまたはonCreateViewメソッドで実行できます。
メソッド説明
public static GTCaptcha4Client getClient(Context context);
public GTCaptcha4Client init(String captchaId);
public GTCaptcha4Client init(String captchaId, GTCaptcha4Config config)
パラメータ説明
| パラメータ | 型 | 説明 |
|---|---|---|
context |
Context |
Contextオブジェクト、Activityインスタンスである必要があります |
appId |
String |
APP_ID、必須パラメータ |
config |
GTCaptcha4Config |
設定オブジェクト、オプション |
init()メソッドはプリロードを開始します。onCreateまたはonCreateViewメソッドで初期化すると、検証プロセスがプリロードされ、検証が高速化されます。init()が検証時に呼び出される場合、プリロードよりも読み込み速度が遅くなります。onCreateまたはonCreateViewメソッドでの初期化を推奨します。
検証の開始
検証プロセスを開始します。
メソッド説明
public void verifyWithCaptcha();
検証のキャンセル
検証プロセスをキャンセルし、検証ウィンドウを閉じます。
メソッド説明
public void cancel();
ログモニタリングの有効化/無効化
ログモニタリングを有効または無効に設定します。
メソッド説明
public void setLogEnable(boolean enable);
検証コールバックの取得
public GTCaptcha4Client addOnSuccessListener(OnSuccessListener listener);
public GTCaptcha4Client addOnFailureListener(OnFailureListener listener);
public GTCaptcha4Client addOnWebViewShowListener(OnWebViewShowListener listener);
コード例
gtCaptcha4Client.addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener() {
@Override
public void onSuccess(boolean status, String response) {
if(status){
// TODO 二次検証を開始
}else {
// TODO ユーザーの回答検証失敗
}
}
}).addOnFailureListener(new GTCaptcha4Client.OnFailureListener() {
@Override
public void onFailure(String error) {
}
}).addOnWebViewShowListener(new GTCaptcha4Client.OnWebViewShowListener() {
@Override
public void onWebViewShow() {
}
})
リソースの破棄
onDestroyライフサイクルでリソースを破棄します。
public void onDestroy(){
super.onDestroy();
if(gtCaptcha4Client != null){
gtCaptcha4Client.destroy();
}
}
画面の向き変更の処理
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(gtCaptcha4Client != null){
gtCaptcha4Client.configurationChanged(newConfig);
}
}
プリロードコード例
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
String[] apiServers = {"captcha-api.engagelab.com"};
String[] staticServers = {"captcha-stat.engagelab.com/www/js"};
GTCaptcha4Config config = new GTCaptcha4Config.Builder()
// サービスアドレスを設定
.setResourcePath("https://captcha-stat.engagelab.com/www/gt4-index.html")
.setApiServers(apiServers)
.setStaticServers(staticServers)
.setDebug(true) // TODO 本番環境では無効にする
.setLanguage("zh")
.setTimeOut(10000)
.setCanceledOnTouchOutside(true)
.build();
gtCaptcha4Client = GTCaptcha4Client.getClient(activity)
.init("your captcha_id", config);
}
private void click(){
gtCaptcha4Client.addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener {
@Override
public void onSuccess(boolean status, String response) {
if(status){
// TODO 二次検証を開始
}else {
// TODO ユーザーの回答検証失敗
}
}
})
.addOnFailureListener(new GTCaptcha4Client.OnFailureListener {
@Override
public void onFailure(String error) {
}
})
.verifyWithCaptcha();
}
通常の読み込みコード例
private void click(){
String[] apiServers = {"captcha-api.engagelab.com"};
String[] staticServers = {"captcha-stat.engagelab.com/www/js"};
GTCaptcha4Config config = new GTCaptcha4Config.Builder()
// サービスアドレスを設定
.setResourcePath("https://captcha-stat.engagelab.com/www/gt4-index.html")
.setApiServers(apiServers)
.setStaticServers(staticServers)
.setDebug(true) // TODO 本番環境では無効にする
.setLanguage("zh")
.setTimeOut(10000)
.setCanceledOnTouchOutside(true)
.build();
gtCaptcha4Client = GTCaptcha4Client.getClient(activity)
.init("your captcha_id", config)
.addOnSuccessListener(new GTCaptcha4Client.OnSuccessListener {
@Override
public void onSuccess(boolean status, String response) {
if(status){
// TODO 二次検証を開始
}else {
// TODO ユーザーの回答検証失敗
}
}
})
.addOnFailureListener(new GTCaptcha4Client.OnFailureListener {
@Override
public void onFailure(String error) {
}
})
.verifyWithCaptcha();
}
詳細なコード例については公式デモを参照してください。
パラメータ設定
GTCaptcha4Config.Builderクラスを使用してパラメータを設定します。
| 定義 | 説明 |
|---|---|
setResourcePath |
必ず以下に設定する必要があります:https://captcha-stat.engagelab.com/www/gt4-index.html |
setApiServers |
必ず以下に設定する必要があります:captcha-api.engagelab.com |
setStaticServers |
必ず以下に設定する必要があります:captcha-stat.engagelab.com/www/js |
setParams |
追加パラメータ、フロントエンドjsで使用するために渡されます |
setDebug |
debugモードかどうか、デフォルトはfalse、本番環境ではfalseに設定 |
setLanguage |
言語を指定、デフォルトはアプリケーションの言語 |
setCanceledOnTouchOutside |
外部タッチで閉じるかどうか、デフォルトはtrue |
setTimeOut |
タイムアウトを設定、単位はms、デフォルトは10000 |
setBackgroundColor |
背景色を設定、デフォルトは透明 |
setDialogStyle |
ダイアログテーマスタイルを設定、デフォルトはgt4_captcha_dialog_style |
setDialogShowListener |
ダイアログ表示のリスナーコールバックを設定 |
build |
GTCaptcha4Configオブジェクトを構築 |
パラメータはsetParamsインターフェースを通じて設定できます。詳細についてはインターフェースドキュメントを参照してください。
setParamsインターフェースは基本データ型、文字列、およびJSONArrayデータ型のみを受け入れます。
エラー処理
検証中に予期しないエラーが発生する可能性があります。addOnFailureListenerインターフェースを実装し、以下のコールバックメソッドを使用して処理できます:
注意:エラーコールバックには、ユーザーが検証をキャンセルした場合も含まれます。これを個別にフィルタリングすることができます。
gtCaptcha4Client.addOnFailureListener(new GTCaptcha4Client.OnFailureListener() {
@Override
public void onFailure(String error){
// 返されたエラー内容の例
// {"code":"-14460","msg":"Verification session canceled","desc":{"description":"User cancelled 'Captcha'"}}
// エラーをJSONとして解析し、エラー説明を置き換え、エラーコードを保持できます
Toast.makeText(context, "Verification Error: $error", Toast.LENGTH_SHORT).show()
}
エラーコードとエラー理由をユーザーに表示することを強く推奨します。これにより、オンライン問題のトラブルシューティングが容易になります。
以下のリストで考えられるエラーコードを参照してください:エラーコードリスト










