الانتقال إلى المحتوى الرئيسي

إعادة التحقق الصامتة

MarkdownChatGPTClaude

يستخدم محرك إعادة التحقق الصامتة، الذي يحلل السياق السلوكي للمستخدم ضمن تأثير الشبكة الخاص بـ Unico ويقدّم إشارة الثقة الخاصة بالمعاملة الحالية. بعبارة أخرى، نقدّم مستوى الثقة بأن هذا هو المستخدم المتوقع في المعاملة.

المتطلب

الحد الأدنى للإصدار: 4.62.0

سمات UnicoCheckPrepareInfo
السمةالنوعمطلوبالوصف
externalUserIdString✅معرّف المستخدم في نظامك. يتم تجزئته تلقائيًا باستخدام SHA-256 قبل الإرسال، ولا يُرسل مطلقًا بنص عادي.
بدء إعادة التحقق الصامتة
الخطوة 1 — تنفيذ initializeSDK في الكود الأصلي (native)

initializeSDK غير متاحة في Dart. يجب أن تُنفَّذ قبل بدء محرك Flutter، لذلك تستدعيها في الكود الأصلي (native) لتطبيقك — Application.onCreate على Android وapplication(_:didFinishLaunchingWithOptions:) على iOS.

استدعِها عند إطلاق التطبيق

يجب استدعاء UnicoSDK.initializeSDK في أقرب وقت ممكن عند إطلاق التطبيق. استدعاؤها لاحقًا يقلل من وقت المعالجة في الخلفية ويزيد من احتمال الحصول على استجابات مصادقة غير حاسمة.

import android.app.Application
import com.acesso.acessobio_android.onboarding.UnicoSDK
import com.acesso.acessobio_android.onboarding.models.Environment
import com.acesso.acessobio_android.onboarding.models.UnicoSDKConfig

class MainApplication : Application() {
override fun onCreate() {
super.onCreate()

UnicoSDK.initializeSDK(
this,
UnicoSDKConfig(
sdkKey = "your_sdk_key",
bundleId = "your_bundle_id",
environment = Environment.UAT
)
)
}
}

سجّل الفئة في android/app/src/main/AndroidManifest.xml:

<application android:name=".MainApplication">

يوفّر الـ plugin الـ SDK الأصلي الخاص بالالتقاط لتطبيقك، لذا فإن UnicoSDK موجود بالفعل في مسار التصريف (compile classpath) — ولا حاجة إلى أي تبعية إضافية في android/app/build.gradle.

إذا تم حذف environment، فإن القيمة الافتراضية هي بيئة الإنتاج.

الخطوة 2 — تنفيذ startSilentValidation

بعد initializeSDK، اربط عملية الجمع الجارية بالفعل بالمستخدم الذي تم تحديده عن طريق استدعاء startSilentValidation مع كائن UnicoCheckPrepareInfo يحتوي على externalUserId.

import 'package:unico_check/unico_check.dart';

try {
await UnicoSilentAuthDefault().startSilentValidation(
UnicoCheckPrepareInfo(externalUserId: 'external_user_id'),
);
} on UnicoError catch (error) {
// error.code, error.description, error.info
}

يكتمل كائن Future المُعاد عندما يبدأ التحقق بنجاح، ويطلق UnicoError في حالة الفشل.

إذا حدث التحقق في بداية التدفق، على سبيل المثال عند تسجيل الدخول، انتظر اكتمال Future قبل الانتقال إلى الخطوة 3.

الأخطاء
الرمزالمعنى
75001لم يتم تهيئة SDK. لم يتم استدعاء initializeSDK، أو لم ينتهِ بعد، أو فشل.
75000فشل عام في الالتقاط.

يحمل UnicoError.info خطوة التدفق التي فشلت. وهو متاح على iOS ويكون دائمًا null على Android.

الخطوة 3 — إنشاء العملية والمصادقة

مع استمرار التحقق، أنشئ عملية التحقق لإكمال المصادقة. راجع مرجع API ▸ API ▸ إنشاء العملية.

أدرِج نفس externalUserId المُرسل في UnicoCheckPrepareInfo من الخطوة 2 داخل نص الطلب (request body) — هذا ما يسمح للخادم الخلفي (backend) بربط إنشاء العملية بالتحقق الجاري بالفعل.

curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": {
"duiType": 1,
"code": "12345678909",
"name": "Luke Skywalker",
"gender": "M",
"birthDate": "2000-05-20",
"email": "[email protected]",
"phone": "5519725570707"
},
"useCase": "Onboarding",
"externalUserId": "external_user_id"
}'

تتضمن الاستجابة الحقل silentAuth.result الذي يحمل نتيجة المصادقة:

{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"silentAuth": {
"result": "yes"
}
}
الحقلالنوعالوصف
silentAuth.resultstringyes أو no — راجع القيم المحتملة أدناه.
silentAuth.result — القيم المحتملة
القيمةالمعنى
yesتمت الموافقة على المصادقة، تم التعرف على المستخدم بثقة كافية، ولا حاجة لالتقاط إضافي.
noبيانات غير كافية للموافقة الصامتة. يُنصح بالمصادقة عبر القياسات الحيوية (السيلفي) أو طريقة بديلة أخرى.