إعادة التحقق الصامتة
| Attribute | Type | Required | Description |
|---|---|---|---|
externalUserId | String | ✅ | معرّف المستخدم في نظامك. يُجزَّأ تلقائيًا بخوارزمية SHA-256 قبل الإرسال، ولا يُرسَل أبدًا كنص عادي. |
الخطوة 1 — تطبيق initializeSDK
أنشئ فئة/كائن UnicoSDK جديدًا، مع دالة ثابتة initializeSDK تُعيد نسخة 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 هي دالة Kotlin من نوع suspend ولا يمكن استدعاؤها مباشرةً من Java. أضف جسر Kotlin صغير إلى مشروعك يُشغّل الـ coroutine ويعرض واجهة callback بسيطة.
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) {
/* ... */
}
});
إذا حدث التحقق في بداية التدفق، مثلاً عند تسجيل الدخول، انتظر رد الاستدعاء onSuccess قبل الانتقال إلى الخطوة 3.
الخطوة 3 — إنشاء العملية والمصادقة
مع استمرار التحقق، أنشئ عملية التحقق لإكمال المصادقة. راجع مرجع API ▸ API ▸ إنشاء العملية.
أدرج نفس externalUserId المُرسَل في PrepareInfo من الخطوة 2 داخل نص الطلب — هذا ما يتيح للخادم الخلفي ربط إنشاء العملية بالتحقق الجاري بالفعل.
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",
"imageBase64": "/9j/4AAQSkZJR..."
}'
تتضمن الاستجابة الحقل silentAuth.result مع نتيجة المصادقة:
{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"silentAuth": {
"result": "yes"
}
}
| Field | Type | Description |
|---|---|---|
silentAuth.result | string | yes أو no — راجع القيم الممكنة أدناه. |
silentAuth.result — القيم الممكنة
| Value | Meaning |
|---|---|
yes | تمت الموافقة على المصادقة، وتم التعرف على المستخدم بثقة كافية، ولا حاجة إلى التقاط إضافي. |
no | بيانات غير كافية للموافقة بصمت. يُوصى بالمصادقة عبر القياسات الحيوية (صورة شخصية) أو طريقة بديلة أخرى. |