人脸核身提供服务端SDK帮助您在服务端依据被验证的人名和身份证号码,请求身份验证的用户图像信息。

说明 阿里云视觉智能开放平台各类目视觉AI能力API接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。

成为开发者

请您使用阿里云账号登录阿里云视觉智能开放平台。如还未持有阿里云账户,请先注册阿里云账号

开通服务

调用人脸核身的API前,您需要开通人脸人体服务。在进行人脸核身认证时,需要先将图片上传至上海地域的OSS Bucket中生成URL链接,通过图片URL链接传入图片数据。关于如何开通OSS服务请参见开通OSS服务。下面为您介绍如何开通人脸人体服务。

  1. 登录阿里云视觉智能开放平台
  2. 在顶部菜单栏的能力广场中单击人脸人体
  3. 人脸人体页面中单击立即开通
    说明 对于公测期免费能力,在页面中显示免费开通;对于商业化付费能力,在页面中显示立即开通,开通后不调用不计费,调用后开始收费。
  4. 确认开通地域并勾选服务协议后,单击立即开通

    页面提示服务开通成功。

    说明 开通了人脸人体服务后,该服务下的所有API均可以直接调用,不需要再单独开通。

生成URL

  1. 登录OSS管理控制台
  2. 创建存储空间
    创建Bucket选择区域时,需要选择与人脸人体服务能力相同的区域华东2(上海)
    说明 如果您的OSS所在地域不是华东2(上海),那么请参见非上海地域OSS用户生成URL。
  3. 将待比对图片上传到OSS服务。
    具体操作请参见上传文件
  4. 查看图片URL。
    在已上传图片列表中,单击详情查看并复制图片URL。

RAM授权

您还需要为您的账户进行RAM授权,以访问相应的阿里云资源。授权操作详情请参见使用RAM Policy控制访问权限

添加依赖包

请根据您的代码选择添加不同的依赖包。
  • Java
    (推荐)在您的Java项目中添加人脸人体服务的POM依赖。
    <!-- https://mvnrepository.com/artifact/com.aliyun/facebody20200910 -->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>facebody20200910</artifactId>
        <version>${aliyun.facebody.version}</version>
    </dependency>
    您也可以下载人脸人体服服务的SDK包直接引用。
    AI类目 SDK包名称 SDK链接 Github链接
    人脸人体 facebody20200910 Aliyun Java SDK Facebody facebody-20200910
  • Python
    打开命令提示符窗口,依次执行如下命令安装Python SDK。
    pip install alibabacloud_facebody20200910

请求示例

请求示例如下:
  • Java请求示例
    说明 请将如下代码示例中的<accessKeyId><accessSecret>替换为您的真实AK信息。如何获取AK请参见创建AccessKey
    import com.aliyun.facebody20200910.models.ExecuteServerSideVerificationRequest;
    import com.aliyun.facebody20200910.models.ExecuteServerSideVerificationResponse;
    import com.aliyun.teaopenapi.models.Config;
    import com.aliyun.teautil.models.RuntimeOptions;
    import com.google.gson.Gson;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class TestExecuteServerSideVerification {
    
        public static void main(String[] args) {
            try {
                com.aliyun.facebody20200910.Client client = createClient("accessKeyId", "accessKeySecret");
                ExecuteServerSideVerificationRequest request = new ExecuteServerSideVerificationRequest();
                request.setCertificateName("真实姓名");
                request.setCertificateNumber("身份证号");
                request.setFacialPictureUrl("图像URL地址");
                request.setSceneType("server");
                RuntimeOptions runtime = new RuntimeOptions();
                Map<String, String> headers = new HashMap();
                headers.put("Accept-Encoding", "identity");
                ExecuteServerSideVerificationResponse response = client.executeServerSideVerificationWithOptions(request, headers, runtime);
                System.out.println("ExecuteServerSideVerificationResponse response: " + new Gson().toJson(response));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static com.aliyun.facebody20200910.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
            Config config = new Config();
            // 您的AccessKey ID
            config.accessKeyId = accessKeyId;
            // 您的AccessKey Secret
            config.accessKeySecret = accessKeySecret;
            // 访问的域名
            config.endpoint = "facebody.cn-shanghai.aliyuncs.com";
            return new com.aliyun.facebody20200910.Client(config);
        }
    }
  • Python请求示例
    说明 请将如下代码示例中的<accessKeyId><accessSecret>替换为您的真实AK信息。如何获取AK请参见创建AccessKey
    from alibabacloud_facebody20200910.client import Client
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_tea_util.models import RuntimeOptions
    
    from alibabacloud_facebody20200910.models import ExecuteServerSideVerificationRequest
    
    config = Config(
            access_key_id='<accessKeyId>',
            access_key_secret='<accessSecret>',
            endpoint='facebody.cn-shanghai.aliyuncs.com',
            region_id='cn-shanghai',
            type='access_key'
        )
    
    # init RuntimeObject
    runtime_option = RuntimeOptions()
    
    # init Client
    client = Client(config)
    
    
    request = ExecuteServerSideVerificationRequest(
        certificate_name="真实姓名",
        certificate_number="身份证号",
        facial_picture_url="图像URL地址"
    )
    
    
    response = client.execute_server_side_verification_with_options(request, headers={"Accept-Encoding": "identity"}, runtime=runtime_option)
    
    print(response)

结果示例

该接口的请求结果示例如下。
{
    "RequestId": "1638718D-C4BA-4009-845D-AC26CACB8354",
    "Data": {
        "Pass": true,
        "VerificationToken": "f2a6bb31a5a9f04edd68eab08045****",
        "Reason": "认证通过(Z8120)"
    }
}
从返回结果来看,该图片的人脸与人名和身份证号码相匹配,认证通过。具体信息如下:
  • RequestId:请求ID。
  • Pass:验证结果为通过。
  • VerificationToken:验证Token。
  • Reason:认证通过。