人脸核身提供服务端SDK帮助您在App中实现刷脸认证功能。本文将结合示例代码进行详细的说明介绍。

成为开发者

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

开通服务

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

    页面提示服务开通成功。

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

RAM授权

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

添加依赖包

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

请求示例

请求示例如下:
  • Java请求示例
    说明 请将如下代码示例中的<accessKeyId><accessSecret>替换为您的真实AK信息。如何获取AK请参见创建AccessKey
    1. 核身认证移动端请求
      import com.aliyuncs.DefaultAcsClient;
      import com.aliyuncs.IAcsClient;
      import com.aliyuncs.exceptions.ClientException;
      import com.aliyuncs.exceptions.ServerException;
      import com.aliyuncs.profile.DefaultProfile;
      import com.google.gson.Gson;
      import java.util.*;
      import com.aliyuncs.facebody.model.v20191230.*;
      
      public class GenRealPersonVerificationToken {
      
          public static void main(String[] args) {
              DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "<accessKeyId>", "<accessSecret>");
              IAcsClient client = new DefaultAcsClient(profile);
      
              GenRealPersonVerificationTokenRequest request = new GenRealPersonVerificationTokenRequest();
              request.setRegionId("cn-shanghai");
              request.setCertificateName("真实姓名");
              request.setCertificateNumber("身份证号");
              request.setMetaInfo("metainfo环境参数");
      
              try {
                  GenRealPersonVerificationTokenResponse response = client.getAcsResponse(request);
                  System.out.println(new Gson().toJson(response));
              } catch (ServerException e) {
                  e.printStackTrace();
              } catch (ClientException e) {
                  System.out.println("ErrCode:" + e.getErrCode());
                  System.out.println("ErrMsg:" + e.getErrMsg());
                  System.out.println("RequestId:" + e.getRequestId());
              }
      
          }
      }
    2. 在iOS或Android客户端发起请求,接入数据,请参见iOS客户端接入教程Android客户端接入教程
    3. 核身认证移动端查询
      import com.aliyuncs.DefaultAcsClient;
      import com.aliyuncs.IAcsClient;
      import com.aliyuncs.exceptions.ClientException;
      import com.aliyuncs.exceptions.ServerException;
      import com.aliyuncs.profile.DefaultProfile;
      import com.google.gson.Gson;
      import java.util.*;
      import com.aliyuncs.facebody.model.v20191230.*;
      
      public class GetRealPersonVerificationResult {
      
          public static void main(String[] args) {
              DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "<accessKeyId>", "<accessSecret>");
              IAcsClient client = new DefaultAcsClient(profile);
      
              GetRealPersonVerificationResultRequest request = new GetRealPersonVerificationResultRequest();
              request.setRegionId("cn-shanghai");
              request.setVerificationToken("verificationToken");
              request.setMaterialHash("materialHash");
      
              try {
                  GetRealPersonVerificationResultResponse response = client.getAcsResponse(request);
                  System.out.println(new Gson().toJson(response));
              } catch (ServerException e) {
                  e.printStackTrace();
              } catch (ClientException e) {
                  System.out.println("ErrCode:" + e.getErrCode());
                  System.out.println("ErrMsg:" + e.getErrMsg());
                  System.out.println("RequestId:" + e.getRequestId());
              }
      
          }
      }
  • Python请求示例
    说明 请将如下代码示例中的<accessKeyId><accessSecret>替换为您的真实AK信息。如何获取AK请参见创建AccessKey
    1. 核身认证请求
      #!/usr/bin/env python
      #coding=utf-8
      
      from aliyunsdkcore.client import AcsClient
      from aliyunsdkcore.acs_exception.exceptions import ClientException
      from aliyunsdkcore.acs_exception.exceptions import ServerException
      from aliyunsdkfacebody.request.v20191230.GenRealPersonVerificationTokenRequest import GenRealPersonVerificationTokenRequest
      
      client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-shanghai')
      
      request = GenRealPersonVerificationTokenRequest()
      request.set_accept_format('json')
      
      request.set_CertificateName("真实姓名")
      request.set_CertificateNumber("身份证号")
      request.set_MetaInfo("metainfo环境参数")
      
      response = client.do_action_with_exception(request)
      # python2:  print(response)
      print(str(response, encoding='utf-8'))
    2. 在iOS或Android客户端发起请求,接入数据,请参见iOS客户端接入教程Android客户端接入教程
    3. 核身认证查询
      #!/usr/bin/env python
      #coding=utf-8
      
      from aliyunsdkcore.client import AcsClient
      from aliyunsdkcore.acs_exception.exceptions import ClientException
      from aliyunsdkcore.acs_exception.exceptions import ServerException
      from aliyunsdkfacebody.request.v20191230.GetRealPersonVerificationResultRequest import GetRealPersonVerificationResultRequest
      
      client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-shanghai')
      
      request = GetRealPersonVerificationResultRequest()
      request.set_accept_format('json')
      
      request.set_VerificationToken("verificationToken")
      request.set_MaterialHash("materialHash")
      
      response = client.do_action_with_exception(request)
      # python2:  print(response)
      print(str(response, encoding='utf-8'))

结果示例

该接口的请求结果示例如下。
{
  "RequestId" : "10FC953D-7C0C-4915-8949-34E3246E5B79",
  "Data" : {
    "Pass" : "true",
    "MaterialMatch" : "{\"certName\":\"张三\",\"certNo\":\"123321199001011234\",\"ocrInfo\":{ \"address\": \"江苏省睢宁县xxxx\",   \"nationality\": \"汉\", \"num\":\"320324196207101234\", \"sex\": \"女\", \"name\": \"张三\", \"birth\": \"19620710\", \"issue\": \"宜川县公安局\",\"endDate\":\"20220912\",\"startDate\":\"20120912\"}}",
    "IdentityInfo" : "T"
  }
}
从返回结果来看,该图片的人脸与人名和身份证号码相匹配,认证通过。具体信息如下:
  • RequestId:请求ID。
  • Pass:验证结果为通过。
  • MaterialMatch:验证结果信息。包含以下信息:
    • certName:本次认证通过的姓名。
    • certNo:本次认证通过的身份证。
    • ocrInfo:本次OCR识别的结果。