แท็บการตรวจสอบสิทธิ์มีโฟลว์การตรวจสอบสิทธิ์ที่ปลอดภัยและเรียบง่ายสำหรับใช้ในแอป Android การสร้างและเปิดตัว AuthTabIntent
จะช่วยให้คุณเรียกใช้แท็บที่กำหนดเองเฉพาะทางซึ่งออกแบบมาเพื่อจัดการประสบการณ์การตรวจสอบสิทธิ์แบบครบวงจรได้ แท็บนี้ได้รับการปรับลดและมีความสามารถที่จำกัด เพื่อให้ผู้ใช้มีสมาธิกับงานที่ทำอยู่ เมื่อเสร็จสิ้น แท็บจะเรียกกลับไปยังแอปพลิเคชันของคุณพร้อมผลลัพธ์โดยใช้ https หรือสคีมาที่กำหนดเอง


ตั้งแต่ Chrome 132 เป็นต้นไป แท็บการตรวจสอบสิทธิ์จะแทนที่การผสานรวมการตรวจสอบสิทธิ์ของแท็บที่กำหนดเองที่มีอยู่ได้โดยตรง สำหรับผู้ใช้ที่อุปกรณ์ไม่รองรับแท็บการตรวจสอบสิทธิ์ ระบบจะเปลี่ยนไปใช้ Custom Tabs โดยอัตโนมัติ คุณสามารถย้ายข้อมูลจากแท็บที่กำหนดเองไปยังแท็บการตรวจสอบสิทธิ์ได้โดยการแก้ไขโค้ดเพียงไม่กี่บรรทัด
วิธีการทำงาน
เมื่อใช้แท็บการตรวจสอบสิทธิ์ แอปไคลเอ็นต์จะเปิดแท็บที่กำหนดเองเฉพาะทางซึ่งแสดงหน้าต่างเบราว์เซอร์ที่โหลด URL พร้อมหน้าการตรวจสอบสิทธิ์ที่คาดไว้ หลังจากเสร็จสิ้นแล้ว แท็บการตรวจสอบสิทธิ์จะแสดงผลการตรวจสอบสิทธิ์โดยใช้การเรียกกลับ
หลังจากการตรวจสอบสิทธิ์ เมื่อมีการไปยัง URI เปลี่ยนเส้นทางของ Callback ที่ระบุไว้ก่อนหน้านี้ ระบบจะบันทึกการเปลี่ยนเส้นทางและส่งกลับไปยังแอปพลิเคชันไคลเอ็นต์โดยใช้ Callback สำหรับการเปลี่ยนเส้นทางที่ใช้สคีมา https เบราว์เซอร์จะยืนยันว่าโดเมนการเปลี่ยนเส้นทางและแอปไคลเอ็นต์เป็นของผู้เผยแพร่รายเดียวกันโดยใช้ลิงก์เนื้อหาดิจิทัล
ไคลเอ็นต์จะได้รับ URI ที่นำทางพร้อมรูปแบบการเปลี่ยนเส้นทาง (หรือสำหรับ https จะได้รับโฮสต์และเส้นทางการเปลี่ยนเส้นทาง) โดยใช้การเรียกกลับที่ระบุ ข้อมูลนี้ประกอบด้วยรหัสผลลัพธ์และข้อมูลอื่นๆ ที่อินเทอร์เฟซการตรวจสอบสิทธิ์ระบุ คุณใช้ข้อมูลนี้เพื่อยืนยันการตรวจสอบสิทธิ์หรือจัดการสถานการณ์ที่ไม่สําเร็จได้
เหตุผลที่ต้องมีแท็บการให้สิทธิ์
ก่อนที่จะมีแท็บการตรวจสอบสิทธิ์ คุณสามารถใช้ Intent ของแท็บที่กำหนดเองมาตรฐานเพื่อขับเคลื่อนขั้นตอนการตรวจสอบสิทธิ์ได้ เราขอแนะนำให้ใช้แท็บการให้สิทธิ์เนื่องจากจะช่วยเพิ่มความปลอดภัย มอบประสบการณ์การใช้งานที่ราบรื่น และยังช่วยแยกรายละเอียดบางอย่างของการตรวจสอบสิทธิ์ออกจากโค้ดฝั่งไคลเอ็นต์ด้วย ด้วยเหตุนี้ คุณจึงจะเห็นว่าแท็บการให้สิทธิ์มอบประสบการณ์การใช้งานที่ดีกว่า
การรักษาความปลอดภัยที่ดียิ่งขึ้น
ในการติดตั้งใช้งานแท็บที่กำหนดเองโดยทั่วไป จะต้องมี Intent เพื่อรับข้อมูลจากหน้าต่างเบราว์เซอร์ที่จัดการการตรวจสอบสิทธิ์ ซึ่งต้องใช้โค้ดเพิ่มเติมและทำให้แอปของคุณอาจถูกรบกวนความตั้งใจ เมื่อใช้แท็บการให้สิทธิ์ ระบบจะรับข้อมูลโดยใช้การเรียกกลับ โดยมีการโอนข้อมูลโดยตรงระหว่าง Android API กับแอปไคลเอ็นต์
ประสบการณ์การใช้งานที่ราบรื่น
ในแท็บที่กำหนดเอง ผู้ใช้จะมีสิทธิ์เข้าถึงฟีเจอร์เพิ่มเติมในเบราว์เซอร์ซึ่งอาจไม่พึงประสงค์สำหรับขั้นตอนการตรวจสอบสิทธิ์ แท็บการให้สิทธิ์มอบประสบการณ์ที่เรียบง่ายซึ่งนำตัวเลือกการปรับแต่งส่วนใหญ่ที่มีใน Custom Tab มาตรฐานออก สำหรับเบราว์เซอร์ Chrome ซึ่งรวมถึงปุ่มย่อ เมนูตามบริบทที่กดค้างไว้ และแตะเพื่อค้นหา รวมถึงรายการเมนูเพื่อเปิดใน Chrome, บุ๊กมาร์ก, ดาวน์โหลดและแชร์ และเพิ่มลงในหน้าจอหลัก
แท็บการตรวจสอบสิทธิ์ยังคงมีฟีเจอร์ให้เบราว์เซอร์ป้อนรหัสผ่านและการชำระเงินที่บันทึกไว้ก่อนหน้านี้โดยอัตโนมัติ นำทางไปข้างหน้าหรือข้างหลัง รีเฟรช แสดงข้อมูลหน้าเว็บ ขอเวอร์ชันเดสก์ท็อปของหน้าเว็บ และแปล
การแยกข้อมูล
การใช้แท็บการตรวจสอบสิทธิ์เพียงอย่างเดียวจะช่วยลดความจำเป็นในการรับข้อมูลจากเบราว์เซอร์ รวมถึงตัวกรอง Intent ใน AndroidManifest.xml
ที่ก่อนหน้านี้จำเป็นต่อการตรวจสอบสิทธิ์เพื่อให้ทำงานได้อย่างถูกต้อง ซึ่งจะช่วยลดความซับซ้อนในฝั่งไคลเอ็นต์ ฟีเจอร์บางอย่างเหล่านี้ยังคงรวมอยู่ในโค้ดฝั่งไคลเอ็นต์ได้เพื่อให้มีความเข้ากันได้แบบย้อนหลังกับแท็บที่กำหนดเองในกรณีที่แท็บการให้สิทธิ์ไม่พร้อมใช้งานในอุปกรณ์ของผู้ใช้
ใช้แท็บการตรวจสอบสิทธิ์
แท็บการตรวจสอบสิทธิ์ต้องใช้ไลบรารีการตรวจสอบสิทธิ์ของเบราว์เซอร์ AndroidX คุณเพิ่มไลบรารีเบราว์เซอร์ AndroidX ได้ในส่วนทรัพยากร Dependency ของไฟล์ build.gradle
ของโปรเจ็กต์ API พร้อมใช้งานในบิลด์เวอร์ชันอัลฟ่า เพิ่มโค้ดต่อไปนี้ลงในไฟล์บิลด์
dependencies {
implementation 'androidx.browser:browser:1.9.0'
}
ก่อนเปิดตัวแท็บการตรวจสอบสิทธิ์ ให้ประกาศ ActivityResultLauncher
ที่ใช้ ActivityResultCaller
รวมถึง ActivityResultCallback
โดยจะดำเนินการก่อนสร้างกิจกรรมหรือ Fragment ดังนี้
// In your activity
private final ActivityResultLauncher<Intent> mLauncher =
AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);
private void handleAuthResult(AuthResult result) {
String message = switch (result.resultCode) {
case AuthTabIntent.RESULT_OK -> "Received auth result.";
case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
}
if (result.resultCode == AuthTabIntent.RESULT_OK) {
message += " Uri: " + result.resultUri;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
จากนั้นใช้ AuthTabIntent.Builder
เพื่อสร้าง AuthTabIntent
แล้วเรียกใช้เมธอด launch
วิธีการเปิดตัวยอมรับพารามิเตอร์ชุดใดชุดหนึ่งจาก 2 ชุดตามรูปแบบที่คุณต้องการ
redirectScheme: สำหรับรูปแบบการเปลี่ยนเส้นทางที่กำหนดเอง เบราว์เซอร์จะเปลี่ยนเส้นทางและแสดง URI พร้อมรูปแบบที่ระบุ
redirectHost, redirectPath: สำหรับรูปแบบการเปลี่ยนเส้นทาง https นั้น API จะกำหนดให้มีโฮสต์และเส้นทางแยกต่างหากเพื่อให้เบราว์เซอร์ตรวจหาการเปลี่ยนเส้นทางและส่งคืน URI เมื่อใช้ https คุณจะต้องยืนยันลิงก์เนื้อหาดิจิทัล
private void launchAuthTab() {
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}
private void launchAuthTabHttps() {
String host = "your_host";
String path = "your_path";
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}
ย้ายข้อมูลจากแท็บที่กำหนดเองไปยังแท็บการตรวจสอบสิทธิ์
อัปเดตการติดตั้งใช้งานการตรวจสอบสิทธิ์ Custom Tabs ที่มีอยู่โดยแก้ไข Intent ของ Custom Tabs เป็น Intent ของ Auth Tab ใหม่ หลังจากเพิ่มโค้ดแล้ว ให้ค้นหา Intent ของแท็บที่กำหนดเองและแก้ไขเป็น Intent ของแท็บการให้สิทธิ์ใหม่
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)
// change to -->
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");
/* - OR - */
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
กลับไปใช้แท็บที่กำหนดเอง
การติดตั้งใช้งานบางอย่างอาจต้องมีการตรวจสอบสิทธิ์ในกรณีที่อุปกรณ์ของผู้ใช้ไม่มีแท็บการตรวจสอบสิทธิ์ เช่น กรณีนี้อาจเกิดขึ้นหากเบราว์เซอร์เริ่มต้นไม่รองรับแท็บการตรวจสอบสิทธิ์ หรือหากเวอร์ชันของเบราว์เซอร์เริ่มต้นไม่ได้อยู่ในระดับที่กำหนด ในกรณีเหล่านี้ ความตั้งใจของแท็บการตรวจสอบสิทธิ์จะเปิดแท็บที่กำหนดเองโดยอัตโนมัติแทนสำหรับเบราว์เซอร์ที่รองรับแท็บที่กำหนดเอง
คุณตรวจสอบได้ว่าเบราว์เซอร์รองรับแท็บการให้สิทธิ์หรือไม่โดยใช้ CustomTabsClient#isAuthTabSupported()
วิธีนี้ช่วยให้แอปเลือกได้แบบไดนามิกระหว่างการเปิดแท็บการตรวจสอบสิทธิ์หรือโฟลว์แท็บที่กำหนดเองตามความสามารถของเบราว์เซอร์ หากต้องการจัดการสถานการณ์ที่ระบบไม่รองรับแท็บการตรวจสอบสิทธิ์อย่างราบรื่น ให้เพิ่มการติดตั้งใช้งานแท็บการตรวจสอบสิทธิ์ในขณะที่ยังคงใช้โค้ด Custom Tabs ที่มีอยู่เพื่อจัดการโฟลว์การตรวจสอบสิทธิ์เป็นตัวสำรอง
โปรดระมัดระวังในการจัดการข้อมูลที่อาจมาจาก ActivityResultCallback
หรือจาก Intent ของกิจกรรม โปรดทราบว่าหากใช้ AuthTabIntent
เพื่อเปิดประสบการณ์สำรองและเบราว์เซอร์ปัจจุบันไม่รองรับแท็บการตรวจสอบสิทธิ์ แอปจะได้รับผลลัพธ์ Activity.RESULT_CANCELED
เมื่อปิดแท็บที่กำหนดเอง
ตัวอย่างการติดตั้งใช้งานแท็บการตรวจสอบสิทธิ์ที่มีการเปลี่ยนเส้นทางไปยังแท็บที่กำหนดเองจะอยู่ในไลบรารี Android Browser Helper