Auth Tab, Android ऐप्लिकेशन में इस्तेमाल करने के लिए, पुष्टि करने का सुरक्षित और आसान तरीका उपलब्ध कराता है. AuthTabIntent
बनाकर और लॉन्च करके, पुष्टि करने की पूरी प्रोसेस को मैनेज करने के लिए डिज़ाइन किए गए खास कस्टम टैब को चालू किया जा सकता है. इस टैब में कम सुविधाएं होती हैं. इससे उपयोगकर्ताओं को अपने काम पर फ़ोकस करने में मदद मिलती है. काम पूरा होने पर, टैब आपके ऐप्लिकेशन को https या कस्टम स्कीमा का इस्तेमाल करके नतीजे के साथ कॉल करता है.


Chrome 132 से, Auth Tab सीधे तौर पर कस्टम टैब के पुष्टि करने वाले मौजूदा इंटिग्रेशन की जगह ले सकता है. जिन उपयोगकर्ताओं के डिवाइसों पर Auth Tab काम नहीं करता उनके लिए, कस्टम टैब पर अपने-आप स्विच हो जाता है. कस्टम टैब से Auth टैब पर माइग्रेट करने के लिए, कोड की कुछ लाइनों में बदलाव करना होगा.
यह कैसे काम करता है
पुष्टि करने वाले टैब की मदद से, क्लाइंट ऐप्लिकेशन एक खास कस्टम टैब लॉन्च करता है. यह टैब, पुष्टि करने वाले पेज के साथ यूआरएल लोड करने वाली ब्राउज़र विंडो दिखाता है. पुष्टि होने के बाद, Auth टैब, कॉलबैक का इस्तेमाल करके पुष्टि का नतीजा दिखाता है.
पुष्टि करने के बाद, जब पहले से दिए गए कॉलबैक रीडायरेक्ट यूआरएल पर नेविगेट किया जाता है, तो रीडायरेक्ट कैप्चर हो जाता है और कॉलबैक का इस्तेमाल करके क्लाइंट ऐप्लिकेशन को वापस भेज दिया जाता है. https स्कीमा का इस्तेमाल करने वाले रीडायरेक्ट के लिए, ब्राउज़र यह पुष्टि करता है कि डिजिटल ऐसेट लिंक का इस्तेमाल करके, रीडायरेक्ट डोमेन और क्लाइंट ऐप्लिकेशन, दोनों का मालिकाना हक एक ही पब्लिशर के पास है.
क्लाइंट को दिए गए कॉलबैक का इस्तेमाल करके, रीडायरेक्ट स्कीम (या https, रीडायरेक्ट होस्ट, और पाथ के लिए) के साथ नेविगेट किया गया यूआरआई मिलता है. इस डेटा में नतीजा कोड के साथ-साथ, पुष्टि करने वाले इंटरफ़ेस से मिला कोई भी अन्य डेटा शामिल होता है. इस डेटा का इस्तेमाल, पुष्टि करने या पुष्टि न होने की स्थितियों को मैनेज करने के लिए किया जा सकता है.
पुष्टि करने के लिए टैब क्यों?
पुष्टि करने वाले टैब से पहले, पुष्टि करने के फ़्लो को बेहतर बनाने के लिए, स्टैंडर्ड कस्टम टैब इंटेंट का इस्तेमाल किया जा सकता था. ऑथेंटिकेशन टैब का इस्तेमाल करना बेहतर होता है, क्योंकि इससे बेहतर सुरक्षा मिलती है और बेहतर अनुभव मिलता है. साथ ही, क्लाइंट कोड से ऑथेंटिकेशन के लिए कुछ इंटरनल को हटाया जा सकता है. इन वजहों से, आपको Auth Tab का इस्तेमाल करने पर बेहतर अनुभव मिलेगा.
बेहतर सुरक्षा
कस्टम टैब को सामान्य तौर पर लागू करने के लिए, पुष्टि करने वाली ब्राउज़र विंडो से डेटा पाने के लिए इंटेंट की ज़रूरत होती है. इसके लिए, आपको अतिरिक्त कोड की ज़रूरत होगी. साथ ही, आपके ऐप्लिकेशन में आपके इंटेंट में रुकावट आने की संभावना बढ़ जाएगी. पुष्टि करने वाले टैब की मदद से, डेटा को कॉलबैक का इस्तेमाल करके पाया जाता है. साथ ही, Android API और क्लाइंट ऐप्लिकेशन के बीच डेटा को सीधे तौर पर ट्रांसफ़र किया जाता है.
बेहतर अनुभव
कस्टम टैब में, उपयोगकर्ता के पास ब्राउज़र की अतिरिक्त सुविधाओं का ऐक्सेस होता है. हो सकता है कि पुष्टि करने के फ़्लो के लिए, ये सुविधाएं काम की न हों. पुष्टि करने के लिए टैब, स्टैंडर्ड कस्टम टैब में मौजूद, पसंद के मुताबिक बनाने के ज़्यादातर विकल्पों को हटा देता है. Chrome ब्राउज़र के लिए, इसमें छोटा करने का बटन, लंबे समय तक दबाकर रखने पर दिखने वाला संदर्भ मेन्यू, और 'खोजने के लिए छुएं' सुविधा शामिल है. साथ ही, Chrome में खोलें, बुकमार्क करें, डाउनलोड करें, और शेयर करें के साथ-साथ होमस्क्रीन पर जोड़ें मेन्यू आइटम भी शामिल हैं.
Auth Tabs में अब भी ब्राउज़र की सुविधाएं मौजूद हैं. इनकी मदद से, पहले से सेव किए गए पासवर्ड और पेमेंट की जानकारी अपने-आप भरी जा सकती है. साथ ही, पेज पर पीछे या आगे जाया जा सकता है, पेज को रीफ़्रेश किया जा सकता है, पेज की जानकारी देखी जा सकती है, पेज के डेस्कटॉप वर्शन का अनुरोध किया जा सकता है, और अनुवाद देखा जा सकता है.
डेटा एब्स्ट्रैक्शन
सिर्फ़ पुष्टि करने वाले टैब को लागू करने से, ब्राउज़र से डेटा पाने के लिए इंटेंट की ज़रूरत नहीं होती. साथ ही, AndroidManifest.xml
में इंटेंट फ़िल्टर की भी ज़रूरत नहीं होती, जो पहले पुष्टि करने की सुविधा के सही तरीके से काम करने के लिए ज़रूरी थे. इससे क्लाइंट साइड पर जटिलताएं कम हो जाती हैं. इनमें से कुछ सुविधाओं को अब भी क्लाइंट कोड में शामिल किया जा सकता है, ताकि उपयोगकर्ता के डिवाइसों पर Auth Tab उपलब्ध न होने पर, कस्टम टैब के साथ पुराने सिस्टम के साथ काम करने की सुविधा मिल सके.
पुष्टि करने के लिए टैब लागू करना
Auth Tab के लिए, AndroidX ब्राउज़र की पुष्टि करने वाली लाइब्रेरी की ज़रूरत होती है. AndroidX ब्राउज़र लाइब्रेरी को किसी प्रोजेक्ट की build.gradle
फ़ाइल के डिपेंडेंसी सेक्शन में जोड़ा जा सकता है. ये एपीआई, अल्फा बिल्ड में उपलब्ध हैं. अपनी बिल्ड फ़ाइल में यह कोड जोड़ें:
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
बनाने के लिए AuthTabIntent.Builder
का इस्तेमाल करें. इसके बाद, launch
तरीके को कॉल करें. लॉन्च करने के तरीके, आपकी ज़रूरत के हिसाब से स्कीम के आधार पर, पैरामीटर के दो सेट में से किसी एक को स्वीकार करते हैं:
redirectScheme: कस्टम रीडायरेक्ट स्कीम के लिए, ब्राउज़र रीडायरेक्ट करता है और दिए गए स्कीम के साथ यूआरआई दिखाता है.
redirectHost, redirectPath: एचटीटीपीएस रीडायरेक्ट स्कीम के लिए, एपीआई को ब्राउज़र के लिए एक अलग होस्ट और पाथ की ज़रूरत होती है, ताकि वह रीडायरेक्ट का पता लगा सके और यूआरआई दिखा सके. एचटीटीपीएस का इस्तेमाल करते समय, डिजिटल एसेट लिंक की पुष्टि करना ज़रूरी है.
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);
}
कस्टम टैब से पुष्टि करने वाले टैब पर माइग्रेट करना
कस्टम टैब के इंटेंट को नए Auth Tab इंटेंट में बदलकर, कस्टम टैब की पुष्टि करने की सुविधा को अपडेट करें. कोड जोड़ने के बाद, कस्टम टैब इंटेंट ढूंढें और उसे नए Auth Tab इंटेंट में बदलें.
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);
कस्टम टैब पर फ़ॉलबैक करना
कुछ मामलों में, पुष्टि करने की ज़रूरत पड़ सकती है. ऐसा तब होता है, जब उपयोगकर्ता का डिवाइस, पुष्टि करने वाले टैब को हैंडल करने में सक्षम न हो. उदाहरण के लिए, ऐसा तब हो सकता है, जब डिफ़ॉल्ट ब्राउज़र पर Auth Tab काम न करता हो या डिफ़ॉल्ट ब्राउज़र का वर्शन ज़रूरी लेवल पर न हो. ऐसे मामलों में, Auth Tab इंटेंट, कस्टम टैब की सुविधा वाले ब्राउज़र के बजाय, अपने-आप कस्टम टैब लॉन्च करता है.
इस स्थिति को आसानी से मैनेज करने के लिए, Auth Tab को लागू करें. साथ ही, पुष्टि करने के फ़्लो को मैनेज करने वाले अपने मौजूदा कस्टम टैब को फ़ॉलबैक के तौर पर रखें.
जिन उपयोगकर्ताओं के डिवाइसों पर Auth Tab की सुविधा काम करती है उन्हें Auth Tab का नया फ़्लो दिखता है. वहीं, अन्य उपयोगकर्ताओं को कस्टम टैब के लेगसी वर्शन का इस्तेमाल करना पड़ता है. उस डेटा को ध्यान से मैनेज करें जो आपके ActivityResultCallback
या गतिविधि के इंटेंट में आ सकता है. ध्यान दें कि अगर AuthTabIntent
का इस्तेमाल फ़ॉलबैक अनुभव को लॉन्च करने के लिए किया जाता है और मौजूदा ब्राउज़र पर Auth Tab काम नहीं करता है, तो कस्टम टैब बंद होने पर आपके ऐप्लिकेशन को Activity.RESULT_CANCELED
नतीजा मिलता है.
Android Browser Helper लाइब्रेरी में, कस्टम टैब पर फ़ॉलबैक के साथ Auth टैब को लागू करने का उदाहरण देखा जा सकता है.