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' } }
              
              repositories {
    flatDir {
        dirs 'libs'
    }
}

            
このコードブロックはフローティングウィンドウ内に表示されます

aarパッケージ依存関係を手動で追加します(AARはサードパーティ依存関係を自動的に含まないため、手動で追加する必要があります):

implementation(name: 'engagelab_captcha_android_vx.y.z', ext: '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" }
              
              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" }
              
              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" />
              
              <!--必須 - デフォルトで適用-->
<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_*",
              
              "R.string.gt4_*",
"R.style.gt4_*",

            
このコードブロックはフローティングウィンドウ内に表示されます

インターフェース設定

呼び出しロジック

  1. 初期化の設定
  2. 検証の開始
  3. 検証コールバックの取得
  4. リソースの破棄

行動検証については、製品構造プロセスを参照してください。最初にバックエンドで対応するサーバーサイドインターフェースを設定し、EngageLab管理コンソールから取得したcaptchaIdKeyを設定する必要があります。

初期化

SDKの初期化設定は、onCreateまたはonCreateViewメソッドで実行できます。

メソッド説明

public static GTCaptcha4Client getClient(Context context); public GTCaptcha4Client init(String captchaId); public GTCaptcha4Client init(String captchaId, GTCaptcha4Config config)
              
              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 verifyWithCaptcha();

            
このコードブロックはフローティングウィンドウ内に表示されます

検証のキャンセル

検証プロセスをキャンセルし、検証ウィンドウを閉じます。

メソッド説明

public void cancel();
              
              public void cancel();

            
このコードブロックはフローティングウィンドウ内に表示されます

ログモニタリングの有効化/無効化

ログモニタリングを有効または無効に設定します。

メソッド説明

public void setLogEnable(boolean enable);
              
              public void setLogEnable(boolean enable);

            
このコードブロックはフローティングウィンドウ内に表示されます

検証コールバックの取得

public GTCaptcha4Client addOnSuccessListener(OnSuccessListener listener); public GTCaptcha4Client addOnFailureListener(OnFailureListener listener); public GTCaptcha4Client addOnWebViewShowListener(OnWebViewShowListener listener);
              
              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() { } })
              
              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(); } }
              
              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 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(); }
              
              @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(); }
              
              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() }
              
              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()
    }

            
このコードブロックはフローティングウィンドウ内に表示されます

エラーコードとエラー理由をユーザーに表示することを強く推奨します。これにより、オンライン問題のトラブルシューティングが容易になります。

以下のリストで考えられるエラーコードを参照してください:エラーコードリスト

icon
お問い合わせ