全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件

Java SDK

更新时间:2018-01-30 18:21:45

获取地址

注意:两个 SDK 都必须引入,其中aliyun-java-sdk-core为阿里云的核心 SDK,aliyun-java-sdk-cloudauth为实人认证的 SDK。

安装说明

参看 GitHub 中的说明,或者 阿里云 SDK 开发指南 - Java SDK 目录下的章节。

实人认证示例

RPBasic认证方案

  1. // 创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", // 默认
  4. "YourAccessKeyID", // 您的Access Key ID
  5. "YourAccessKeySecret"); // 您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. String biz = "YourRPBasicBiz"; // 您在控制台上创建的、采用RPBasic认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  8. String ticketId = UUID.randomUUID().toString(); // 认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  9. String token = null; // 认证token, 用来串联认证请求中的各个接口
  10. int statusCode = -1; // -1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
  11. // 1. 服务端发起认证请求, 获取到token
  12. // GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  13. GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
  14. getVerifyTokenRequest.setBiz(biz);
  15. getVerifyTokenRequest.setTicketId(ticketId);
  16. try {
  17. GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
  18. token = response.getData().getVerifyToken().getToken();
  19. } catch (ServerException e) {
  20. e.printStackTrace();
  21. } catch (ClientException e) {
  22. e.printStackTrace();
  23. }
  24. // 2. 服务端将token传递给无线客户端
  25. // 3. 无线客户端用token调起无线认证SDK
  26. // 4. 用户按照由无线认证SDK组织的认证流程页面的指引,提交认证资料
  27. // 5. 认证流程结束退出无线认证SDK,进入客户端回调函数
  28. // 6. 服务端查询认证状态(客户端回调中也会携带认证状态, 但建议以服务端调接口确认的为准)
  29. // GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  30. GetStatusRequest getStatusRequest = new GetStatusRequest();
  31. getStatusRequest.setBiz(biz);
  32. getStatusRequest.setTicketId(ticketId);
  33. try {
  34. GetStatusResponse response = client.getAcsResponse(getStatusRequest);
  35. statusCode = response.getData().getStatusCode();
  36. } catch (ServerException e) {
  37. e.printStackTrace();
  38. } catch (ClientException e) {
  39. e.printStackTrace();
  40. }
  41. // 7. 服务端获取认证资料
  42. // GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  43. GetMaterialsRequest getMaterialsRequest = new GetMaterialsRequest();
  44. getMaterialsRequest.setBiz(biz);
  45. getMaterialsRequest.setTicketId(ticketId);
  46. if( 1 == statusCode || 2 == statusCode ) { // 认证通过 or 认证不通过
  47. try {
  48. GetMaterialsResponse response = client.getAcsResponse(getMaterialsRequest);
  49. // 后续业务处理
  50. } catch (ServerException e) {
  51. e.printStackTrace();
  52. } catch (ClientException e) {
  53. e.printStackTrace();
  54. }
  55. }

RPManual认证方案

代码示例同 RPBasic,其中biz须传入您在控制台上创建的、采用RPManual认证方案的认证场景标识。

RPBioOnly认证方案

  1. // 创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", // 默认
  4. "YourAccessKeyID", // 您的Access Key ID
  5. "YourAccessKeySecret"); // 您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. String biz = "YourRPBioOnlyBiz"; // 您在控制台上创建的、采用RPBioOnly认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  8. String ticketId = UUID.randomUUID().toString(); // 认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  9. String token = null; // 认证token, 用来串联认证请求中的各个接口
  10. int statusCode = -1; // -1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
  11. // 1. 服务端发起认证请求, 获取到token
  12. // GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  13. GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
  14. getVerifyTokenRequest.setBiz(biz);
  15. getVerifyTokenRequest.setTicketId(ticketId);
  16. // 若需要binding图片(如身份证正反面等), 且使用base64上传, 需要设置请求方法为POST
  17. // getVerifyTokenRequest.setMethod(MethodType.POST);
  18. // binding 内容请根据 认证方案 中的说明传入相应字段
  19. getVerifyTokenRequest.setBinding("{\"Name\": \"张三\",\"IdentificationNumber\": \"330110201711110101\"}");
  20. try {
  21. GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
  22. token = response.getData().getVerifyToken().getToken();
  23. } catch (ServerException e) {
  24. e.printStackTrace();
  25. } catch (ClientException e) {
  26. e.printStackTrace();
  27. }
  28. // 2. 服务端将token传递给无线客户端
  29. // 3. 无线客户端用token调起无线认证SDK
  30. // 4. 用户按照由无线认证SDK组织的认证流程页面的指引,提交认证资料
  31. // 5. 认证流程结束退出无线认证SDK,进入客户端回调函数
  32. // 6. 服务端查询认证状态(客户端回调中也会携带认证状态, 但建议以服务端调接口确认的为准)
  33. // GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  34. GetStatusRequest getStatusRequest = new GetStatusRequest();
  35. getStatusRequest.setBiz(biz);
  36. getStatusRequest.setTicketId(ticketId);
  37. try {
  38. GetStatusResponse response = client.getAcsResponse(getStatusRequest);
  39. statusCode = response.getData().getStatusCode();
  40. } catch (ServerException e) {
  41. e.printStackTrace();
  42. } catch (ClientException e) {
  43. e.printStackTrace();
  44. }
  45. // 7. 服务端获取认证资料
  46. // GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html
  47. GetMaterialsRequest getMaterialsRequest = new GetMaterialsRequest();
  48. getMaterialsRequest.setBiz(biz);
  49. getMaterialsRequest.setTicketId(ticketId);
  50. if( 1 == statusCode || 2 == statusCode ) { // 认证通过 or 认证不通过
  51. try {
  52. GetMaterialsResponse response = client.getAcsResponse(getMaterialsRequest);
  53. // 后续业务处理
  54. } catch (ServerException e) {
  55. e.printStackTrace();
  56. } catch (ClientException e) {
  57. e.printStackTrace();
  58. }
  59. }

RPMin认证方案

  1. // 创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", // 默认
  4. "YourAccessKeyID", // 您的Access Key ID
  5. "YourAccessKeySecret"); // 您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. String biz = "YourRPMinBiz"; // 您在控制台上创建的、采用RPMin认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
  8. String ticketId = UUID.randomUUID().toString(); // 认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
  9. String token = null; // 认证token, 用来串联认证请求中的各个接口
  10. // 1. 发起认证请求, 获取到token
  11. // GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.html
  12. GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
  13. getVerifyTokenRequest.setBiz(biz); // 传入采用RPMin认证方案的认证场景标识(biz)
  14. getVerifyTokenRequest.setTicketId(ticketId);
  15. try {
  16. GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
  17. token = response.getData().getVerifyToken().getToken();
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. }
  21. // 2. 用token提交认证材料
  22. // SubmitMaterials接口文档:https://help.aliyun.com/document_detail/58176.html
  23. SubmitMaterialsRequest submitRequest = new SubmitMaterialsRequest();
  24. submitRequest.setVerifyToken(token);
  25. // 若使用base64提交图片, 需要设置请求方法为POST
  26. submitRequest.setMethod(MethodType.POST);
  27. // 创建要提交的认证材料列表, 请根据 认证方案 中的说明传入相应字段
  28. List<SubmitMaterialsRequest.Material> verifyMaterials = new ArrayList<SubmitMaterialsRequest.Material>();
  29. SubmitMaterialsRequest.Material identificationNumber = new SubmitMaterialsRequest.Material();
  30. identificationNumber.setMaterialType("IdentificationNumber");
  31. identificationNumber.setValue("330110201711110101");
  32. verifyMaterials.add(identificationNumber);
  33. SubmitMaterialsRequest.Material name = new SubmitMaterialsRequest.Material();
  34. name.setMaterialType("Name");
  35. name.setValue("张三");
  36. verifyMaterials.add(name);
  37. SubmitMaterialsRequest.Material facePic = new SubmitMaterialsRequest.Material();
  38. facePic.setMaterialType("FacePic");
  39. facePic.setValue("base64://iVBORw0KGgoA..."); // base64方式上传图片, 格式为base64://<图片base64字符串>, 其中图片base64字符串需要去掉头部描述(如"data:image/png;base64,"), 并请注意控制单个接口请求的Body在8M以内
  40. verifyMaterials.add(facePic);
  41. SubmitMaterialsRequest.Material idCardFrontPic = new SubmitMaterialsRequest.Material();
  42. idCardFrontPic.setMaterialType("IdCardFrontPic");
  43. idCardFrontPic.setValue("http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg"); // http方式上传图片, 此http地址须可公网访问
  44. verifyMaterials.add(idCardFrontPic);
  45. SubmitMaterialsRequest.Material idCardBackPic = new SubmitMaterialsRequest.Material();
  46. idCardBackPic.setMaterialType("IdCardBackPic");
  47. idCardBackPic.setValue("oss://verify-img:715559d76a40774OSS.JPG"); // oss方式上传图片, 此oss文件地址须可公开访问
  48. verifyMaterials.add(idCardBackPic);
  49. submitRequest.setMaterials(verifyMaterials);
  50. try {
  51. SubmitMaterialsResponse response = client.getAcsResponse(submitRequest);
  52. // 通常SubmitMaterials接口会同步返回认证结果,但是考虑到内部服务超时等情况,接口无法等到最终结果,会返回认证中状态, 此时需要使用GetStatus接口轮询。
  53. // GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html
  54. // 后续业务处理
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. }

人脸验证示例

人脸比对验证

  1. // 创建DefaultAcsClient实例并初始化
  2. DefaultProfile profile = DefaultProfile.getProfile(
  3. "cn-hangzhou", // 默认
  4. "YourAccessKeyID", // 您的Access Key ID
  5. "YourAccessKeySecret"); // 您的Access Key Secret
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. // 创建API请求并设置参数
  8. // CompareFaces接口文档:https://help.aliyun.com/document_detail/59317.html
  9. CompareFacesRequest request = new CompareFacesRequest();
  10. // 若使用base64上传图片, 需要设置请求方法为POST
  11. request.setMethod(MethodType.POST);
  12. request.setSourceImageType("FacePic");
  13. request.setSourceImageValue("base64://iVBORw0KGgoA..."); // base64方式上传图片, 格式为base64://<图片base64字符串>, 其中图片base64字符串需要去掉头部描述(如"data:image/png;base64,"), 并请注意控制单个接口请求的Body在8M以内
  14. request.setTargetImageType("FacePic"); // 若为身份证芯片照则传"IDPic"
  15. request.setTargetImageValue("http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg"); // http方式上传图片, 此http地址须可公网访问
  16. // 发起请求并处理异常
  17. try {
  18. CompareFacesResponse response = client.getAcsResponse(request);
  19. // 后续业务处理
  20. } catch (ServerException e) {
  21. e.printStackTrace();
  22. } catch (ClientException e) {
  23. e.printStackTrace();
  24. }
本文导读目录