我的位置:速网百科 > 电商资讯 阿里云

阿里云身份核验api,阿里云身份认证

作者:崔德润 时间:2022-05-21 15:29:56

如何用阿里云的API进行身份证识别

如何用阿里云的API进行身份证识别

  以下内容属于引用复制,但可以回复你的问题:
  准备工作:在libs下添加 alicloud-Android-apigateway-sdk-1.0.1.jar,commons-codec-1.10-1.jar
  在build.gradle添加 compile'com.squareup.okhttp3:okhttp:3.4.1'
  在onCreate,或者afterViews初始化API网关
  private void initGatewaySdk() {
  // 初始化API网关
  ApiGatewayClient.init(getApplicationContext(), false);
  }
  调用拍照功能
  private void getPhotoCard(){
  final String status = Environment.getExternalStorageState();
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, CAMERA_REQUEST_CODE);
  }
  if (status.equals(Environment.MEDIA_MOUNTED)) {
  defaultPhotoAddress = PHOTO_DIR + "/" + getPhotoName();
  PreferenceUtils.modifyStringValueInPreferences(CardActivity.this, Preferences.IMAGE_3, defaultPhotoAddress);
  imageUri = Uri.fromFile(new File(defaultPhotoAddress));
  Intent intentPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture
  intentPhoto.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
  startActivityForResult(intentPhoto, CAMERA_REQUEST_CODE);
  } else {
  Toast.makeText(CardActivity.this, "没有sd卡", Toast.LENGTH_SHORT).show();
  }
  }
  可以对照片进行裁剪
  private void cropImageUri(Uri desUri, int outputX, int outputY, int requestCode){
  Intent intent = new Intent("com.android.camera.action.CROP");
  intent.setDataAndType(desUri, "image/*");
  intent.putExtra("crop", "true");
  intent.putExtra("aspectX", 5);
  intent.putExtra("aspectY", 3);
  intent.putExtra("outputX", outputX);
  intent.putExtra("outputY", outputY);
  intent.putExtra("scale", true);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, desUri);
  intent.putExtra("return-data", false);
  intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
  intent.putExtra("noFaceDetection", true);
  startActivityForResult(intent, requestCode);
  }
  用base64上传照片
  private void trygetCardNum() {
  if (NetworkUtils.isConnectWithTip(this, "您未连接网络,无法获取数据")) {
  LoadingUtil.show(this);
  String imgBase64 = "";
  try {
  defaultPhotoAddress = PreferenceUtils.getStringValueInPreferences(this, Preferences.IMAGE_3);
  File file = new File(defaultPhotoAddress);
  byte[] content = new byte[(int) file.length()];
  FileInputStream finputstream = new FileInputStream(file);
  finputstream.read(content);
  finputstream.close();
  imgBase64 = new String(Base64.encodeBase64(content));
  // imgBase64 = Base64Img.Bitmap2StrByBase64(bitmap);
  if(imgBase64!=null||!imgBase64.equals("")){
  PreferenceUtils.modifyStringValueInPreferences(CardActivity.this, Preferences.IMAGE_3, null);
  }
  } catch (IOException e) {
  e.printStackTrace();
  return;
  }
  // 获取服务
  RpcService rpcService = ApiGatewayClient.getRpcService();
  final ApiRequest apiRequest = new ApiRequest();
  // 设置请求地址、Path及Method
  apiRequest.setAddress("https://dm-51.data.aliyun.com");
  apiRequest.setPath("/rest/160601/ocr/ocr_idcard.json");
  apiRequest.setMethod(HttpMethod.POST);
  // 按照文档设置二进制形式Body,支持设置Query参数、Header参数、Form形式Body
  apiRequest.setStringBody("{\"inputs\":[{\"image\":{\"dataType\":50,\"dataValue\":\""+imgBase64+"\"},\"configure\":{\"dataType\":50,\"dataValue\":\"{\\\"side\\\":\\\"face\\\"}\"}}]}");
  // 设置支持自签等形式的证书,如果服务端证书合法请勿设置该值,仅在开发测试或者非常规场景下设置。
  apiRequest.setTrustServerCertificate(true);
  // 设置超时
  apiRequest.setTimeout(10000);
  rpcService.call(apiRequest, new ApiResponseCallback() {
  @Override
  public void onSuccess(ApiResponse apiResponse) {
  // 处理apiResponse
  LoadingUtil.dismiss();
  String s = apiResponse.getStringBody();
  NumBean result = JSONObject.parseObject(s, NumBean.class);
  String dataValue = result.getOutputs().get(0).getOutputValue().getDataValue();
  DataValueBean dataValueBean = JSONObject.parseObject(dataValue, DataValueBean.class);
  Number = dataValueBean.getNum();
  name = dataValueBean.getName();
  address = dataValueBean.getAddress();
  birth = dataValueBean.getBirth();
  nationality = dataValueBean.getNationality();
  sex = dataValueBean.getSex();
  if(dataValueBean.getError_msg()==null){
  runOnUiThread(new Runnable() {
  public void run() {
  if(Number == null||Number.equals("")||name == null||name.equals("")||address == null||address.equals("")||birth == null||birth.equals("")||sex == null||sex.equals("")){
  Toast.makeText(CardActivity.this, "扫描失败,请重试", Toast.LENGTH_LONG).show();
  }else {
  //扫描成功
  }
  }
  });
  }else {
  errString = dataValueBean.getError_msg();
  runOnUiThread(new Runnable() {
  public void run() {
  Toast.makeText(CardActivity.this, "扫描失败,请重试", Toast.LENGTH_LONG).show();
  }
  });
  }
  }
  @Override
  public void onException(ApiInvokeException e) {
  // 处理异常
  LoadingUtil.dismiss();
  runOnUiThread(new Runnable() {
  public void run() {
  Toast.makeText(CardActivity.this, "扫描失败,请重试", Toast.LENGTH_LONG).show();
  }
  });
  }
  });
  }
  }
  附:
  public class NumBean implements Serializable{
  private List<OutputsBean> outputs;
  public List<OutputsBean> getOutputs() {
  return outputs;
  }
  public void setOutputs(List<OutputsBean> outputs) {
  this.outputs = outputs;
  }
  public static class OutputsBean {
  private String outputLabel;
  private OutputMultiBean outputMulti;
  private OutputValueBean outputValue;
  public String getOutputLabel() {
  return outputLabel;
  }
  public void setOutputLabel(String outputLabel) {
  this.outputLabel = outputLabel;
  }
  public OutputMultiBean getOutputMulti() {
  return outputMulti;
  }
  public void setOutputMulti(OutputMultiBean outputMulti) {
  this.outputMulti = outputMulti;
  }
  public OutputValueBean getOutputValue() {
  return outputValue;
  }
  public void setOutputValue(OutputValueBean outputValue) {
  this.outputValue = outputValue;
  }
  public static class OutputMultiBean {
  }
  public static class OutputValueBean {
  private int dataType;
  private String dataValue;
  public int getDataType() {
  return dataType;
  }
  public void setDataType(int dataType) {
  this.dataType = dataType;
  }
  public String getDataValue() {
  return dataValue;
  }
  public void setDataValue(String dataValue) {
  this.dataValue = dataValue;
  }
  }
  }
  }
  public class DataValueBean implements Serializable{
  private String address;
  private String birth;
  private String config_str;
  private String error_msg;
  private String name;
  private String nationality;
  private String num;
  private String request_id;
  private String sex;
  private boolean success;
  public String getAddress() {
  return address;
  }
  public void setAddress(String address) {
  this.address = address;
  }
  public String getBirth() {
  return birth;
  }
  public void setBirth(String birth) {
  this.birth = birth;
  }
  public String getConfig_str() {
  return config_str;
  }
  public void setConfig_str(String config_str) {
  this.config_str = config_str;
  }
  public String getError_msg() {
  return error_msg;
  }
  public void setError_msg(String error_msg) {
  this.error_msg = error_msg;
  }
  public String getName() {
  return name;
  }
  public void setName(String name) {
  this.name = name;
  }
  public String getNationality() {
  return nationality;
  }
  public void setNationality(String nationality) {
  this.nationality = nationality;
  }
  public String getNum() {
  return num;
  }
  public void setNum(String num) {
  this.num = num;
  }
  public String getRequest_id() {
  return request_id;
  }
  public void setRequest_id(String request_id) {
  this.request_id = request_id;
  }
  public String getSex() {
  return sex;
  }
  public void setSex(String sex) {
  this.sex = sex;
  }
  public boolean isSuccess() {
  return success;
  }
  public void setSuccess(boolean success) {
  this.success = success;
  }
  }
  在AndroidManifest.xml下添加
  <meta-data android:name="com.alibaba.apigateway.appKey" android:value="" />
  <meta-data android:name="com.alibaba.apigateway.appSecret" android:value="" />

实名认证如何实现?怎么接入身份证核验API接口?

  云脉实名认证系统的实现流程如下:
  1.证件识别:用户上传身份证正反面,系统自动OCR识别录入身份证信息;
  2.联网核查:联网公安数据库验证身份证信息的真实性;
  3.人脸识别:打开手机摄像头捕捉现场人脸图像,与证件照进行比对,确认人证一致;
  4.活体检测:打开摄像头,根据系统指示,念出相应的数字或配合张嘴闭眼动作,完成活体检测,完成实名认证。
  5.视频检测:针对安全性要求高的业务,系统还支持对交易主体进行视频面签,并将视频录制下来存档。
  在云脉OCR SDK开发者平台可以接入身份证核验API接口

阿里云 oss提供了哪些api接口

  阿里云api如何调用接口
  对ECS服务接口的调用是通过向ECS服务端发送HTTP请求(可以通过HTTP或HTTPS协议发送),并获取ECS服务对该请求响应结果的过程。ECS服务端在接收到用户请求后,对请求做必要的身份验证和参数验证,在所有验证成功后根据请求的指定参数提交并完成相应操作,并把处理的结果以 HTTP响应的形式返回给调用者。

阿里云调用 API 服务后返回什么结果

阿里云调用 API 服务后返回什么结果

  返回结果

  调用 API 服务后返回数据采用统一格式,返回的 HTTP 状态码为 2xx,代表调用成功;返回 4xx 或 5xx 的 HTTP 状态码代表调用失败。调用成功返回的数据格式主要有 XML 和 JSON 两种,外部系统可以在请求时传入参数来制定返回的数据格式,默认为 XML 格式。本文档中的返回示例为了便于用户查看,做了格式化处理,实际返回结果是没有进行换行、缩进等处理的。

  成功结果:

  错误结果

  调用接口出错后,将不会返回结果数据。调用方可根据每个接口对应的错误码以及下述 2.3.3 的公共错误码来定位错误原因。当调用出错时,HTTP 请求返回一个 4xx 或 5xx 的 HTTP 状态码。返回的消息体中是具体的错误代码及错误信息。另外还包含一个全局唯一的请求 ID:RequestId 和一个您该次请求访问的站点 ID:HostId。在调用方找不到错误原因时,可以联系阿里云客服,并提供该 HostId 和 RequestId,以便我们尽快帮您解决问题。

  公共错误码

  错误代码

  描述

  Http 状态码

  语义

  MissingParameter The input parameter “Action” that is mandatory for processing this request is not supplied 400 缺少 Action 字段

  MissingParameter The input parameter “AccessKeyId” that is mandatory for processing this request is not supplied 400 缺少 AccessKeyId 字段

  MissingParameter An input parameter “Signature” that is mandatory for processing the request is not supplied. 400 缺少 Signature 字段

  MissingParameter The input parameter “TimeStamp” that is mandatory for processing this request is not supplied 400 缺少 Timestamp 字段

  MissingParameter The input parameter “Version” that is mandatory for processing this request is not supplied 400 缺少 Version 字段

  InvalidParameter The specified parameter “Action or Version” is not valid. 400 无效的 Action 值(该 API 不存在)

  InvalidAccessKeyId.NotFound The Access Key ID provided does not exist in our records. 400 无效的 AccessKeyId 值(该 key 不存在)

  Forbidden.AccessKeyDisabled The Access Key is disabled. 403 该 AccessKey 处于禁用状态

  IncompleteSignature The request signature does not conform to Aliyun standards. 400 无效的 Signature 取值(签名结果错误)

  InvalidParamater The specified parameter “SignatureMethod” is not valid. 400 无效的 SignatureMethod 取值

  InvalidParamater The specified parameter “SignatureVersion” is not valid. 400 无效的 SignatureVersion 取值

  IllegalTimestamp The input parameter “Timestamp” that is mandatory for processing this request is not supplied. 400 无效的 Timestamp 取值(Timestamp 与服务器时间相差超过了 1 个小时)

  SignatureNonceUsed The request signature nonce has been used. 400 无效的 SignatureNonce(该 SignatureNonce 值已被使用过)

  InvalidParameter The specified parameter “Action or Version” is not valid. 400 无效的 Version 取值

  InvalidOwnerId The specified OwnerId is not valid. 400 无效的 OwnerId 取值

  InvalidOwnerAccount The specified OwnerAccount is not valid. 400 无效的 OwnerAccount 取值

  InvalidOwner OwnerId and OwnerAccount can’t be used at one API access. 400 同时使用了 OwnerId 和 OwnerAccount

  Throttling Request was denied due to request throttling. 400 因系统流控拒绝访问

  Throttling Request was denied due to request throttling. 400 该 key 的调用 quota 已用完

  InvalidAction Specified action is not valid. 403 该 key 无权调用该 API

  UnsupportedHTTPMethod This http method is not supported. 403 用户使用了不支持的 Http Method(当前 TOP 只支持 post 和 get)

  ServiceUnavailable The request has failed due to a temporary failure of the server. 500 服务不可用

  UnsupportedParameter The parameter ”” is not supported. 400 使用了无效的参数

  InternalError The request processing has failed due to some unknown error, exception or failure. 500 其他情况

  MissingParameter The input parameter OwnerId,OwnerAccount that is mandatory for processing this request is not supplied. 403 调用该接口没有指定 OwnerId

  Forbidden.SubUser The specified action is not available for you。 403 无权调用订单类接口

  UnsupportedParameter The parameter ”” is not supported. 400 该参数无权使用

  Forbidden.InstanceNotFound The specified Instance is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Instance 不存在

  Forbidden.DiskNotFound The specified Disk is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Disk 不存在

  Forbidden.SecurityGroupNotFound The specified SecurityGroup is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 SecurityGroup 不存在

  Forbidden.SnapshotNotFound The specified Snapshot is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Snapshot 不存在

  Forbidden.ImageNotFound The specified Image is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Image 不存在

  Forbidden.RAM User not authorized to operate the specified resource, or this API doesn’t support RAM. 403 使用了 RAM 授权子账号进行资源访问,但是本次操作没有被正确的授权

  Forbidden.NotSupportRAM This action does not support accessed by RAM mode. 403 该接口不允许使用 RAM 方式进行访问

  InsufficientBalance Your account does not have enough balance. 400 余额不足

  IdempotentParameterMismatch Request uses a client token in a previous request but is not identical to that request. 400 使用了一个已经使用过的 ClientToken,但此次请求内容却又与上一次使用该 Token 的 request 不一样.

  RealNameAuthenticationError Your account has not passed the real-name authentication yet. 403 用户未进行实名认证

  InvalidIdempotenceParameter.Mismatch The specified parameters are different from before 403 幂等参数不匹配

  LastTokenProcessing The last token request is processing 403 上一次请求还在处理中

  InvalidParameter The specified parameter is not valid 400 参数校验失败

如何使用阿里云语音验证码API

  API的接口说明上面有指导的吧,建议你看下网页链接

本被网友采纳

版权声明:本文由互联网用户自发贡献,仅代表作者观点。若文章违规或侵权,请 (举报反馈) ,核实后立即删除。