logoเอกสาร
ค้นหา
เข้าสู่ระบบ

คู่มือการผสานรวม CAPTCHA สำหรับ Android

บทนำผลิตภัณฑ์

รายการ คำอธิบาย
คุณสมบัติหลัก 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 ให้ยกเว้นการพึ่งพา kotlin: exclude(group: 'org.jetbrains.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

แพ็กเกจ aar ของ SDK ได้รับการทำให้คลุมเครือแล้ว การทำให้คลุมเครือซ้ำอาจทำให้เกิดข้อผิดพลาดที่ไม่คาดคิด โดยค่าเริ่มต้น แพ็กเกจ aar รวมการกำหนดค่าการทำให้คลุมเครือของ SDK ปัจจุบัน การพึ่งพาระยะไกลและการพึ่งพา aar ในเครื่องทำให้แน่ใจว่า SDK จะไม่ถูกทำให้คลุมเครืออีกครั้ง หากคุณต้องการแยกแพ็กเกจ aar และผสานรวมไฟล์ jar และทรัพยากรแยกกัน ให้แน่ใจว่าคุณคัดลอกเนื้อหาของไฟล์ proguard.txt จากไดเรกทอรีที่แยกออกมาไปยังการกำหนดค่าการทำให้คลุมเครือของแอปพลิเคชันของคุณเพื่อหลีกเลี่ยงการทำให้ SDK คลุมเครือซ้ำ

หากคุณใช้ andRes สำหรับการทำให้ทรัพยากรคลุมเครือ ให้ยกเว้นทรัพยากรที่รวมอยู่ใน SDK จากการทำให้คลุมเครือเพื่อหลีกเลี่ยงข้อผิดพลาดที่เกิดจากการขาดทรัพยากร การกำหนดค่ายกเว้นมีดังนี้:

"R.string.gt4_*", "R.style.gt4_*",
              
              "R.string.gt4_*",
"R.style.gt4_*",

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การกำหนดค่าการใช้งาน

ลอจิกการเรียกใช้

  1. กำหนดค่าเริ่มต้น
  2. เริ่มการยืนยัน
  3. รับการเรียกกลับการยืนยัน
  4. ทำลายทรัพยากร

อ้างอิง กระบวนการโครงสร้างผลิตภัณฑ์ สำหรับการยืนยันพฤติกรรม คุณต้องตั้งค่าการเชื่อมต่อ เซิร์ฟเวอร์ฝั่ง ที่เกี่ยวข้องบนแบ็กเอนด์ของคุณและกำหนดค่า captchaId และ Key ที่ได้รับจาก EngageLab Management Console

การเริ่มต้น

ข้อมูลการกำหนดค่าเริ่มต้นของ 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();
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

สำหรับตัวอย่างโค้ดโดยละเอียด โปรดดูที่ Demo อย่างเป็นทางการ

การกำหนดค่าพารามิเตอร์

กำหนดค่าพารามิเตอร์ผ่านคลาส 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 ตามเอกสาร API

อินเทอร์เฟซ 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
ติดต่อฝ่ายขาย