إعادة التحقق الصامتة
يستخدم محرك إعادة التحقق الصامتة، الذي يحلل السياق السلوكي للمستخدم ضمن تأثير الشبكة الخاص بـ Unico ويقدّم إشارة الثقة الخاصة بالمعاملة الحالية. بعبارة أخرى، نقدّم مستوى الثقة بأن هذا هو المستخدم المتوقع في المعاملة.
| السمة | النوع | مطلوب | الوصف |
|---|---|---|---|
externalUserId | String | ✅ | معرّف المستخدم في نظامك. يتم تجزئته تلقائيًا باستخدام SHA-256 قبل الإرسال، ولا يُرسل مطلقًا بنص عادي. |
الخطوة 1 — تنفيذ initializeSDK
أنشئ فئة/كائن UnicoSDK جديدًا، يحتوي على طريقة ثابتة (static) باسم initializeSDK تُعيد نسخة (instance) من UnicoSDK، وتستقبل context وكائن UnicoSDKConfig يحتوي على sdkKey وbundleId وenvironment. احتفظ بالنسخة المُعادة — فهي مطلوبة لاحقًا لاستدعاء startSilentValidation من Java.
يجب استدعاء UnicoSDK.initializeSDK في أقرب وقت ممكن عند إطلاق التطبيق (مثال: Application.onCreate). استدعاؤها لاحقًا يقلل من وقت المعالجة في الخلفية ويزيد من احتمال الحصول على استجابات مصادقة غير حاسمة.
- Kotlin
- Java
UnicoSDK.initializeSDK(
context,
UnicoSDKConfig(
sdkKey = "your_sdk_key",
bundleId = "your_bundle_id",
environment = Environment.UAT
)
)
UnicoSDK sdk = UnicoSDK.initializeSDK(
context,
new UnicoSDKConfig("your_sdk_key", "your_bundle_id", Environment.UAT)
);
الخطوة 2 — تنفيذ startSilentValidation
بعد initializeSDK، اربط عملية الجمع الجارية بالفعل بالمستخدم الذي تم تحديده عن طريق استدعاء startSilentValidation مع كائن PrepareInfo يحتوي على externalUserId.
- Kotlin
- Java
val prepareInfo = PrepareInfo(
externalUserId = "external_user_id"
)
UnicoSDK.startSilentValidation(prepareInfo)
.onSuccess { result -> /* ... */ }
.onFailure { error -> /* ... */ }
startSilentValidation هي دالة (suspend function) في Kotlin — ولا يمكن لـ Java استدعاءها مباشرة. استخدم الجسر أدناه لإنشاء الاتصال.
interface SilentAuthCallback {
fun onSuccess(success: Boolean)
fun onFailure(message: String?)
}
object SilentAuthBridge {
@JvmStatic
fun startSilentValidation(
owner: LifecycleOwner,
sdk: UnicoSDK,
externalUserId: String,
callback: SilentAuthCallback
) {
owner.lifecycleScope.launch {
val result = sdk.startSilentValidation(PrepareInfo(externalUserId, null))
result.onSuccess { callback.onSuccess(it.success) }
.onFailure { callback.onFailure(it.message) }
}
}
}
SilentAuthBridge.startSilentValidation(this, sdk, externalUserId, new SilentAuthCallback() {
@Override
public void onSuccess(boolean success) {
/* ... */
}
@Override
public void onFailure(String message) {
/* ... */
}
});
إذا حدث التحقق في بداية التدفق، على سبيل المثال عند تسجيل الدخول، انتظر رد الاتصال (callback) onSuccess قبل الانتقال إلى الخطوة 3.
الخطوة 3 — إنشاء العملية والمصادقة
مع استمرار التحقق، أنشئ عملية التحقق لإكمال المصادقة. راجع مرجع API ▸ API ▸ إنشاء العملية.
أدرِج نفس externalUserId المُرسل في PrepareInfo من الخطوة 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.result | string | yes أو no — راجع القيم المحتملة أدناه. |
silentAuth.result — القيم المحتملة
| القيمة | المعنى |
|---|---|
yes | تمت الموافقة على المصادقة، تم التعرف على المستخدم بثقة كافية، ولا حاجة لالتقاط إضافي. |
no | بيانات غير كافية للموافقة الصامتة. يُنصح بالمصادقة عبر القياسات الحيوية (السيلفي) أو طريقة بديلة أخرى. |