服务端接入教程

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

说明

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

成为开发者

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

开通服务

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

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

    页面提示服务开通成功。

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

文件URL处理

  1. 登录OSS管理控制台

  2. 创建存储空间

    创建Bucket选择区域时,需要选择与人脸人体服务能力相同的区域华东2(上海)

    说明

    如果您的OSS所在地域不是华东2(上海),请参见文件URL处理进行文件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

配置环境变量

配置环境变量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET

重要
  • 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维,具体操作,请参见创建RAM用户

  • 请不要将AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。

请求示例

请求示例如下:

  • Java请求示例

    说明

    请将如下代码示例中的<accessKeyId><accessSecret>替换为您的真实AccessKey信息。如何获取AccessKey请参见创建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 {
                // 创建AccessKey ID和AccessKey Secret,请参考https://help.aliyun.com/document_detail/175144.html。
                // 如果您使用的是RAM用户的AccessKey,还需要为RAM用户授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html。
                // 从环境变量读取配置的AccessKey ID和AccessKey Secret。运行代码示例前必须先配置环境变量。
                com.aliyun.facebody20200910.Client client = createClient(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
                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>替换为您的真实AccessKey信息。如何获取AccessKey请参见创建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(
            # 创建AccessKey ID和AccessKey Secret,请参考https://help.aliyun.com/document_detail/175144.html。
            # 如果您用的是RAM用户的AccessKey,还需要为RAM用户授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html。
            # 从环境变量读取配置的AccessKey ID和AccessKey Secret。运行代码示例前必须先配置环境变量。
            access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
            access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
            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:认证通过。