Skip to content

Xác minh Face Authen ​

Xác thực một người dùng dựa trên hồ sơ (profile) khuôn mặt đã đăng ký của họ và trả về matched, unmatched hoặc unsure cùng một điểm số. Khi một ref_id giao dịch được cung cấp, nó cũng cấp một authentication_key mà backend của bạn redeem để đóng giao dịch.

Endpoint ​

http
POST /v1/face_auth
Content-Type: application/json
json
{
  "user_id": "user_00000001",
  "ref_id": "ref_00000001",
  "faces": [
    { "id": "a4facba3-334b-41fb-97e3-4766cb70ae29" }
  ],
  "device_id": "device_00000001",
  "app_id": "app_00000001",
  "lat": "10.7769",
  "lng": "106.7009",
  "face_type": "selfie",
  "metadata": { "key2": "value2" }
}

Tham số:

Tham sốKiểuBắt buộcMặc địnhMô tả
user_idstringCó—User ID của khách hàng.
ref_idstringKhông—ID tham chiếu của một giao dịch được tạo trước khi xác minh. Hãy cung cấp nó để giao dịch có thể được tra cứu sau đó theo trạng thái.
facesImageData[]Có—Ảnh selfie của người dùng. Cần ít nhất một ảnh.
device_idstringKhông—Device ID của người dùng, hiển thị trong lịch sử face auth trên admin portal.
app_idstringKhông—App mà khách hàng đã dùng, hiển thị trong lịch sử face auth.
latstringKhông—Vĩ độ của thiết bị được dùng.
lngstringKhông—Kinh độ của thiết bị được dùng.
face_typestringKhôngselfieLoại ảnh khuôn mặt đầu vào: selfie hoặc id_card.
metadatajson_objectKhông—Bất kỳ metadata key-value nào để lưu cùng lần đăng nhập này.

ImageData ​

Tham sốKiểuBắt buộcMặc địnhMô tả
idstringKhông—ID của ảnh được trả về bởi Tải ảnh lên.
base64stringKhông—Văn bản dữ liệu ảnh mã hóa Base64.
labelstringKhông—Nhãn của ảnh, như mô tả trong Khuyến nghị sử dụng.
metadatastring_jsonKhông—Chuỗi JSON key/value. Ví dụ: {"gesture":"left","type":1}

Trả về: VerifyFaceAuthResponse

Ví dụ request ​

bash
curl -X POST \
  '<BASE_URL>/v1/face_auth' \
  -H 'Authorization: ATV <ACCESS_ID>:<SIGNATURE>' \
  -H 'X-TV-Timestamp: <TIMESTAMP>' \
  -H 'Content-Type: application/json' \
  -d '{
    "user_id": "user_00000001",
    "faces": [
      { "id": "a4facba3-334b-41fb-97e3-4766cb70ae29" },
      { "id": "c5a2a405-f152-4248-b746-3af76b241ef7" },
      { "id": "5d0345f7-da7c-44e8-bd6c-a8c08c806227" }
    ]
  }'

Signature của thiết bị (request từ SDK) ​

Khi Mobile SDK gọi endpoint này bằng token giao dịch (Authorization: Bearer …), trên tenant đã bật kiểm tra signature của thiết bị, SDK còn gửi Device-Id, X-Device-Key-Id và X-Device-Signature. Khóa ký (signing credential) mà X-Device-Key-Id chỉ tới phải ở trạng thái ACTIVE và được đăng ký cho cùng Device-Id; nếu không, request bị từ chối với access_denied_exception. Xem Ký request để biết khi nào các header này là bắt buộc.

Response ​

json
{
  "data": {
    "status": "success",
    "auth_check": {
      "score": 0.98,
      "result": "matched"
    },
    "request_id": "cfc7b8d5-f2e2-437b-80e5-d600dfad26e2",
    "authentication_key": "<AUTHENTICATION_KEY>"
  },
  "errors": [],
  "success": true,
  "code": 0,
  "message": "Success"
}
TrườngKiểuMô tả
data.statusstringsuccess hoặc failure.
data.auth_checkobjectKết quả xác thực. Có mặt khi success là true.
data.auth_check.resultstringmatched, unmatched hoặc unsure.
data.auth_check.scorefloatXác suất khuôn mặt được cung cấp khớp với hồ sơ, khoảng 0–1.
data.request_idstringRequest ID; cung cấp cho CAKE Support khi cần kiểm tra log.
data.authentication_keystringKey mà backend của bạn redeem tại Xác minh khóa xác thực giao dịch.

WARNING

Không phê duyệt hành động dựa trên auth_check.result do ứng dụng báo cáo. Hãy redeem authentication_key từ backend của bạn và quyết định dựa trên kết quả đó — một client có thể tự khai bất kỳ verdict nào nó muốn. Coi unsure là một kết quả riêng biệt cần xem xét thủ công, không phải một dạng matched mềm.

Lỗi ​

MãThông báo
2001003Ảnh gửi lên server không có khuôn mặt nào.
2001006Các khuôn mặt phát hiện được từ ảnh gửi lên server không khớp nhau.
2001008Khuôn mặt đã được đăng ký trong hệ thống.
2001009Ảnh gửi lên server có nhiều khuôn mặt.
2001010Không tìm thấy Access ID.
2001011Kiểm tra liveness của selfie / id_card thất bại.
2001012Kiểm tra sanity của selfie / id_card thất bại.
2001016Vượt giới hạn tốc độ face auth.
2001017Vượt giới hạn brute-force của face auth.
2001025Ảnh selfie gửi lên server có độ dài không khớp với cấu hình.
2001026Các ảnh gửi lên server bị trùng lặp.
2002201Xác thực khuôn mặt không khớp (verdict unsure).
2002205Xác thực khuôn mặt không khớp (verdict unmatched).
2002206Hồ sơ người dùng đã bị khóa.
2009005Phiên bản SDK không còn được hỗ trợ. Vui lòng cập nhật ứng dụng.
401100Bạn không được phép thực hiện hành động này.
4001000Tham số đầu vào vi phạm một ràng buộc.
4001001Header X-TV-Timestamp đã hết hạn, cần một cái mới hơn.
4001002Ảnh selfie hoặc ảnh gốc có nhiều hơn 1 khuôn mặt.
4041000Không tìm thấy image ID trong DB.
4041001Không tìm thấy người dùng.
4091000user_id đã được đăng ký.
4131000Kích thước ảnh đầu vào vượt quá giới hạn cho phép (15MB).
4151000Định dạng ảnh được cung cấp không được hỗ trợ (JPG/PNG).
4291000Số lượng request vượt quá giới hạn throughput của bạn.
5001000Xảy ra lỗi không mong đợi trong quá trình xử lý request.
MãMô tả
access_denied_exceptionBạn không được phép thực hiện hành động này.
invalid_parameter_exceptionTham số đầu vào vi phạm một ràng buộc.
request_time_too_skewedHeader X-TV-Timestamp đã hết hạn, cần một cái mới hơn.
incorrect_number_of_facesẢnh selfie hoặc ảnh gốc có nhiều hơn 1 khuôn mặt.
image_not_found_exceptionKhông tìm thấy image ID trong DB.
user_profile_not_found_exceptionKhông tìm thấy hồ sơ của người dùng.
user_profile_lockedHồ sơ người dùng đã bị khóa.
face_auth_rate_limit_exceededVượt giới hạn tốc độ face auth.
face_auth_brute_force_limit_exceededVượt giới hạn brute-force của face auth.
sdk_version_unsupportedSDK cũ hơn phiên bản tối thiểu mà tenant của bạn chấp nhận cho các request có signature của thiết bị.
image_too_large_exceptionKích thước ảnh đầu vào vượt quá giới hạn cho phép (15MB).
invalid_image_format_exceptionĐịnh dạng ảnh được cung cấp không được hỗ trợ (JPG/PNG).
rate_limit_exceptionSố lượng request vượt quá giới hạn throughput của bạn.
duplicated_imageCác ảnh gửi lên server bị trùng lặp.
selfie_image_invalidẢnh selfie gửi lên server có độ dài không khớp với cấu hình.
sanity_check_failedKiểm tra sanity của selfie / id_card thất bại.
liveness_check_failedKiểm tra liveness của selfie / id_card thất bại.
image_has_no_facesẢnh gửi lên server không có khuôn mặt nào.
image_has_multiple_facesẢnh gửi lên server có nhiều khuôn mặt.
face_already_registeredKhuôn mặt đã được đăng ký trong hệ thống.
compare_faces_not_matchedCác khuôn mặt phát hiện được từ ảnh gửi lên server không khớp nhau.
internal_server_errorXảy ra lỗi không mong đợi trong quá trình xử lý request.

Một lần không khớp là một lỗi, không phải một success: true với verdict tiêu cực: 2002205 cho unmatched và 2002201 cho unsure. Các lần thất bại liên tiếp sẽ gây ra face_auth_brute_force_limit_exceeded rồi khóa hồ sơ với 2002206.

Bước tiếp theo ​

Developers