توفّر علامة التبويب Auth Tab سلسلة إجراءات مصادقة آمنة ومبسّطة لاستخدامها في تطبيقات Android. من خلال إنشاء AuthTabIntent
وتشغيله، يمكنك استدعاء علامة تبويب مخصّصة متخصّصة مصمّمة لإدارة تجربة مصادقة شاملة. تكون علامة التبويب هذه بسيطة وتتضمّن إمكانات محدودة، ما يتيح للمستخدمين التركيز على المَهمّة التي ينفّذونها. عند اكتمال العملية، تعاود علامة التبويب الاتصال بتطبيقك مع عرض نتيجة باستخدام https أو المخططات المخصّصة.


بدءًا من الإصدار 132 من Chrome، يمكن أن تحلّ علامة تبويب المصادقة محلّ عمليات الدمج الحالية للمصادقة في علامات التبويب المخصّصة مباشرةً. بالنسبة إلى المستخدمين الذين لا تتوافق أجهزتهم مع "علامة تبويب المصادقة"، يتم تلقائيًا استخدام "علامات التبويب المخصّصة". يمكنك الانتقال من علامات التبويب المخصّصة إلى علامة التبويب Auth عن طريق تعديل بضعة أسطر من الرموز البرمجية.
آلية العمل
باستخدام علامة تبويب المصادقة، يطلق تطبيق العميل علامة تبويب مخصّصة متخصّصة تعرض نافذة متصفّح تحمّل عنوان URL مع صفحة المصادقة المتوقّعة. بعد اكتمال عملية المصادقة، تعرض علامة التبويب Auth Tab نتيجة المصادقة باستخدام دالة رد الاتصال.
بعد المصادقة، عند الانتقال إلى معرّف URI لإعادة التوجيه الخاص بوظيفة رد الاتصال الذي تم توفيره سابقًا، يتم تسجيل عملية إعادة التوجيه وإرجاعها إلى تطبيق العميل باستخدام وظيفة رد الاتصال. بالنسبة إلى عمليات إعادة التوجيه التي تستخدم مخطط https، يتحقّق المتصفّح من أنّ الناشر نفسه يملك نطاق إعادة التوجيه وتطبيق العميل باستخدام روابط تنقل إلى مواد عرض رقمية.
يتلقّى العميل معرّف الموارد المنتظم (URI) الذي تم الانتقال إليه مع مخطط إعادة التوجيه (أو بالنسبة إلى https، مضيف إعادة التوجيه والمسار) باستخدام دالة الرجوع المقدَّمة. تتضمّن هذه البيانات رمز نتيجة بالإضافة إلى أي بيانات أخرى تقدّمها واجهة المصادقة. يمكنك استخدام هذه البيانات لإثبات صحة المصادقة أو التعامل مع السيناريوهات غير الناجحة.
لماذا علامة التبويب "المصادقة"؟
قبل إطلاق Auth Tab، كان بإمكانك استخدام هدف "علامات التبويب المخصّصة" العادي لتفعيل مسارات المصادقة. يُفضّل استخدام علامة تبويب المصادقة لأنّها توفّر أمانًا محسّنًا وتجربة سلسة، كما أنّها تجرّد بعض التفاصيل الداخلية للمصادقة من رمز العميل. لهذه الأسباب، ستجد أنّ علامة التبويب "المصادقة" توفّر تجربة أفضل.
مستوى أمان مُحسَّن
في عملية التنفيذ النموذجية لعلامة التبويب المخصّصة، يجب توفير هدف لتلقّي البيانات من نافذة المتصفّح التي تتولّى عملية المصادقة. ويتطلّب ذلك رمزًا إضافيًا ويعرّض تطبيقك إلى تداخل محتمل في هدفك. باستخدام علامة تبويب المصادقة، يتم تلقّي البيانات باستخدام دالة رد الاتصال، مع نقل البيانات مباشرةً بين واجهة برمجة تطبيقات Android وتطبيق العميل.
تجربة مبسطة
في علامة التبويب المخصّصة، يمكن للمستخدم الوصول إلى ميزات إضافية في المتصفّح قد لا تكون مرغوبًا فيها في مسار المصادقة. تقدّم علامة تبويب المصادقة تجربة مبسطة تزيل معظم خيارات التخصيص المتاحة في علامة التبويب المخصّصة العادية. بالنسبة إلى متصفّحات Chrome، يشمل ذلك زر التصغير وقائمة السياق التي تظهر عند النقر مع الاستمرار وميزة "النقر للبحث"، بالإضافة إلى عناصر القائمة التي تتيح الفتح في Chrome ووضع إشارة مرجعية والتنزيل والمشاركة والإضافة إلى الشاشة الرئيسية.
تظل علامات تبويب المصادقة تحتفظ بميزات تتيح للمتصفّح ملء كلمات المرور ومعلومات الدفع المحفوظة سابقًا تلقائيًا، والتنقّل للخلف أو للأمام، وإعادة التحميل، وعرض معلومات الصفحة، وطلب إصدار متوافق مع الكمبيوتر من الصفحة، وتوفير الترجمة.
تجريد البيانات
يؤدي تنفيذ علامة التبويب Auth Tab وحدها إلى إلغاء الحاجة إلى هدف لتلقّي البيانات من المتصفّح، بالإضافة إلى فلاتر الأهداف في AndroidManifest.xml
التي كانت مطلوبة سابقًا لكي تعمل المصادقة بشكل صحيح. يؤدي ذلك إلى إزالة التعقيد من جهة العميل. لا يزال من الممكن تضمين بعض هذه الميزات في رمز العميل لتوفير توافق مع الإصدارات القديمة من "علامات التبويب المخصّصة" في الحالات التي لا تتوفّر فيها "علامة تبويب المصادقة" على أجهزة المستخدمين.
تنفيذ علامة التبويب "المصادقة"
تتطلّب علامة التبويب "المصادقة" مكتبة مصادقة المتصفّح AndroidX. يمكن إضافة "مكتبة AndroidX للمتصفّح" في قسم التبعيات في ملف build.gradle
الخاص بالمشروع. تتوفّر واجهات برمجة التطبيقات في إصدار أولي. أضِف ما يلي إلى ملف الإنشاء:
dependencies {
implementation 'androidx.browser:browser:1.9.0'
}
قبل إطلاق علامة تبويب مصادقة، عليك تعريف 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، تتطلّب واجهة برمجة التطبيقات مضيفًا ومسارًا منفصلَين لكي يرصد المتصفّح عملية إعادة التوجيه ويعرض معرّف الموارد الموحّد. عند استخدام HTTPS، يجب إثبات ملكية حسابك باستخدام Digital Asset Link.
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
عدِّل عملية تنفيذ المصادقة الحالية في "علامات التبويب المخصّصة" من خلال تعديل الغرض من "علامات التبويب المخصّصة" إلى الغرض الجديد من "علامة تبويب المصادقة". بعد إضافة الرمز، ابحث عن هدف علامات التبويب المخصّصة وعدِّله إلى هدف علامة التبويب Auth الجديد.
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 أو إذا كان إصدار المتصفّح التلقائي لا يستوفي المستوى المطلوب. في هذه الحالات، يتم تلقائيًا تشغيل Custom Tab بدلاً من Auth Tab intent للمتصفّحات التي تتوافق مع Custom Tabs.
يمكنك التحقّق مما إذا كان المتصفّح يتيح استخدام Auth Tab من خلال CustomTabsClient#isAuthTabSupported()
. تتيح هذه الطريقة لتطبيقك الاختيار بشكلٍ ديناميكي بين تشغيل "علامة تبويب Auth" أو مسار "علامات التبويب المخصّصة" استنادًا إلى إمكانات المتصفّح. للتعامل بسلاسة مع الحالات التي لا تتوفّر فيها علامة التبويب Auth Tab، أضِف عملية تنفيذ علامة التبويب Auth Tab مع الاحتفاظ برمز علامات التبويب المخصّصة الحالي الذي يتعامل مع مسارات المصادقة كحلّ احتياطي.
احرص على التعامل مع البيانات التي يمكن أن تصل إما إلى ActivityResultCallback
أو إلى هدف النشاط. يُرجى العِلم أنّه في حال استخدام AuthTabIntent
لتشغيل تجربة احتياطية وكان المتصفّح الحالي لا يتوافق مع علامة التبويب Auth، سيتلقّى تطبيقك نتيجة Activity.RESULT_CANCELED
عند إغلاق علامة التبويب المخصّصة.
يمكن العثور على مثال على تنفيذ علامة التبويب Auth مع الرجوع إلى علامات التبويب المخصّصة في مكتبة Android Browser Helper.