ลดความซับซ้อนในการตรวจสอบสิทธิ์โดยใช้แท็บการตรวจสอบสิทธิ์

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

แท็บที่กำหนดเองที่พร้อมใช้งานอย่างเต็มรูปแบบ
รูปที่ 1 แท็บที่กำหนดเองที่พร้อมใช้งานอย่างเต็มรูปแบบ
แท็บการตรวจสอบสิทธิ์ที่มีฟังก์ชันการทำงานขั้นต่ำ
รูปที่ 2 แท็บการตรวจสอบสิทธิ์ที่มีความสามารถขั้นต่ำ

ตั้งแต่ Chrome 132 แท็บการตรวจสอบสิทธิ์จะแทนที่การผสานรวมการตรวจสอบสิทธิ์ของแท็บที่กำหนดเองที่มีอยู่ได้โดยตรง สําหรับผู้ใช้ที่อุปกรณ์ไม่รองรับแท็บการตรวจสอบสิทธิ์ ระบบจะเปลี่ยนไปใช้แท็บที่กําหนดเองโดยอัตโนมัติ การย้ายข้อมูลจากแท็บที่กำหนดเองไปยังแท็บการตรวจสอบสิทธิ์ทำได้โดยการแก้ไขโค้ด 2-3 บรรทัด

วิธีการทำงาน

เมื่อใช้แท็บการตรวจสอบสิทธิ์ แอปไคลเอ็นต์จะเปิดแท็บที่กำหนดเองเฉพาะซึ่งแสดงหน้าต่างเบราว์เซอร์ที่โหลด URL ที่มีหน้าการตรวจสอบสิทธิ์ที่คาดไว้ หลังจากเสร็จสิ้นแล้ว แท็บการตรวจสอบสิทธิ์จะแสดงผลการตรวจสอบสิทธิ์โดยใช้การเรียกกลับ

หลังจากการตรวจสอบสิทธิ์แล้ว เมื่อมีการไปยัง URI เปลี่ยนเส้นทางของคอลแบ็กที่ระบุไว้ก่อนหน้านี้ ระบบจะบันทึกการเปลี่ยนเส้นทางและส่งกลับไปยังแอปพลิเคชันไคลเอ็นต์โดยใช้คอลแบ็ก สําหรับการเปลี่ยนเส้นทางที่ใช้สคีม https เบราว์เซอร์จะยืนยันว่าโดเมนการเปลี่ยนเส้นทางและแอปไคลเอ็นต์เป็นของผู้ให้บริการรายเดียวกันโดยใช้ Digital Asset Links

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

เหตุผลที่ควรใช้แท็บการตรวจสอบสิทธิ์

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

การรักษาความปลอดภัยที่ดียิ่งขึ้น

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

ประสบการณ์การใช้งานที่มีประสิทธิภาพ

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

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

การแยกข้อมูล

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

ใช้แท็บการตรวจสอบสิทธิ์

แท็บการตรวจสอบสิทธิ์ต้องใช้ไลบรารีการตรวจสอบสิทธิ์เบราว์เซอร์ AndroidX คุณสามารถเพิ่มไลบรารีเบราว์เซอร์ AndroidX ในส่วน Dependency ของไฟล์ build.gradle ของโปรเจ็กต์ API พร้อมใช้งานในรุ่นอัลฟ่า เพิ่มโค้ดต่อไปนี้ลงในไฟล์บิลด์

dependencies {
    implementation 'androidx.browser:browser:1.9.0-alpha01'
}

ก่อนเปิดแท็บการตรวจสอบสิทธิ์ ให้ประกาศ ActivityResultLauncher ที่ใช้ ActivityResultCaller และ ActivityResultCallback ซึ่งต้องดำเนินการก่อนสร้างกิจกรรมหรือข้อมูลโค้ด

// 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 วิธีการเปิดใช้ยอมรับชุดพารามิเตอร์ชุดใดชุดหนึ่งต่อไปนี้ตามรูปแบบที่ต้องการ

  • 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 Tab ที่มีอยู่โดยการแก้ไข Intent ของ Custom Tab เป็น Intent ของแท็บการตรวจสอบสิทธิ์ใหม่ หลังจากเพิ่มโค้ดแล้ว ให้ค้นหา 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);

เปลี่ยนไปใช้แท็บที่กำหนดเอง

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

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

ผู้ใช้ที่มีอุปกรณ์พร้อมใช้งานแท็บการตรวจสอบสิทธิ์จะเห็นขั้นตอนการใช้แท็บการตรวจสอบสิทธิ์แบบใหม่ ส่วนผู้ใช้รายอื่นๆ จะกลับไปใช้แท็บที่กำหนดเองแบบเดิม โปรดระมัดระวังในการจัดการข้อมูลที่อาจส่งไปยัง ActivityResultCallback หรือ Intent กิจกรรม โปรดทราบว่าหากใช้ AuthTabIntent เพื่อเปิดประสบการณ์การใช้งานสำรองและเบราว์เซอร์ปัจจุบันไม่รองรับแท็บการตรวจสอบสิทธิ์ แอปของคุณจะได้รับผลลัพธ์ Activity.RESULT_CANCELED เมื่อปิดแท็บที่กำหนดเอง

ตัวอย่างการใช้งานแท็บการตรวจสอบสิทธิ์ที่มีการเปลี่ยนเส้นทางไปยังแท็บที่กำหนดเองมีอยู่ในไลบรารีตัวช่วยเบราว์เซอร์ Android

แหล่งข้อมูลเพิ่มเติม