คู่มือการผสานรวม 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'
}
}
นอกจากนี้ ให้เพิ่มแพ็กเกจ 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ให้ยกเว้นการพึ่งพา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" />
กฎ Proguard
แพ็กเกจ aar ของ SDK ได้รับการทำให้คลุมเครือแล้ว การทำให้คลุมเครือซ้ำอาจทำให้เกิดข้อผิดพลาดที่ไม่คาดคิด โดยค่าเริ่มต้น แพ็กเกจ aar รวมการกำหนดค่าการทำให้คลุมเครือของ SDK ปัจจุบัน การพึ่งพาระยะไกลและการพึ่งพา aar ในเครื่องทำให้แน่ใจว่า SDK จะไม่ถูกทำให้คลุมเครืออีกครั้ง หากคุณต้องการแยกแพ็กเกจ aar และผสานรวมไฟล์ jar และทรัพยากรแยกกัน ให้แน่ใจว่าคุณคัดลอกเนื้อหาของไฟล์ proguard.txt จากไดเรกทอรีที่แยกออกมาไปยังการกำหนดค่าการทำให้คลุมเครือของแอปพลิเคชันของคุณเพื่อหลีกเลี่ยงการทำให้ SDK คลุมเครือซ้ำ
หากคุณใช้ andRes สำหรับการทำให้ทรัพยากรคลุมเครือ ให้ยกเว้นทรัพยากรที่รวมอยู่ใน SDK จากการทำให้คลุมเครือเพื่อหลีกเลี่ยงข้อผิดพลาดที่เกิดจากการขาดทรัพยากร การกำหนดค่ายกเว้นมีดังนี้:
"R.string.gt4_*",
"R.style.gt4_*",
การกำหนดค่าการใช้งาน
ลอจิกการเรียกใช้
- กำหนดค่าเริ่มต้น
- เริ่มการยืนยัน
- รับการเรียกกลับการยืนยัน
- ทำลายทรัพยากร
อ้างอิง กระบวนการโครงสร้างผลิตภัณฑ์ สำหรับการยืนยันพฤติกรรม คุณต้องตั้งค่าการเชื่อมต่อ เซิร์ฟเวอร์ฝั่ง ที่เกี่ยวข้องบนแบ็กเอนด์ของคุณและกำหนดค่า
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)
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
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();
}
สำหรับตัวอย่างโค้ดโดยละเอียด โปรดดูที่ 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()
}
ขอแนะนำอย่างยิ่งให้แสดงรหัสข้อผิดพลาดพร้อมกับเหตุผลข้อผิดพลาดแก่ผู้ใช้เพื่อให้ง่ายต่อการแก้ไขปัญหาออนไลน์
ดูรายการรหัสข้อผิดพลาดที่เป็นไปได้จากลิงก์นี้: รายการรหัสข้อผิดพลาด ```









