1.引入阿里的SDK

2. 搬一下java 的代码

DefaultProfile profile = DefaultProfile.GetProfile(
"cn-hangzhou", //默认
"YourAccessKeyID", //您的Access Key ID
"YourAccessKeySecret");

DefaultProfile profile = DefaultProfile.GetProfile(
"cn-hangzhou", //默认
"YourAccessKeyID", //您的Access Key ID
"YourAccessKeySecret");

//IClientProfile client = DefaultProfile.GetProfile("cn-hangzhou", KeyID, KeySecret);
IAcsClient client = new DefaultAcsClient(profile);

//您在控制台上创建的、采用RPBasic认证方案的认证场景标识, 创建方法:https://help.aliyun.com/document_detail/59975.html
string biz = "YourRPBasicBiz";

//认证ID, 由使用方指定, 发起不同的认证任务需要更换不同的认证ID
string ticketId = Guid.NewGuid().ToString();

//认证token, 表达一次认证会话
string token = null;

//-1 未认证, 0 认证中, 1 认证通过, 2 认证不通过
int statusCode = -1;

//1. 服务端发起认证请求, 获取到token
//GetVerifyToken接口文档:https://help.aliyun.com/document_detail/57050.htm

GetVerifyTokenRequest getVerifyTokenRequest = new GetVerifyTokenRequest();
getVerifyTokenRequest.Biz = biz;
getVerifyTokenRequest.TicketId = ticketId;
getVerifyTokenRequest.Method = MethodType.POST;
var ss = new
{
Name= "张三",
IdentificationNumber = "330110201711110101",
IdCardFrontPic = "http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg",
IdCardBackPic = "base64:///9j/4AAQSkZJRgABAQEASABIAAD/2..."
};
getVerifyTokenRequest.Binding = JsonConvert.SerializeObject(ss);
//通过binding参数传入业务已经采集的认证资料,其中姓名、身份证号为必要字段
//若需要binding图片资料,请控制单张图片大小在 2M 内,避免拉取超时
// getVerifyTokenRequest.setBinding("{\"Name\": \"张三\",\"IdentificationNumber\": \"330110201711110101\"}");
//友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
// request.TemplateParamJson = "[{\"name\":\"Tom\", \"code\":\"123\"},{\"name\":\"Jack\", \"code\":\"456\"}]";

//GetEndpoints
// GetVerifyTokenResponse response = client.GetEndpoints(getVerifyTokenRequest);
// token = response.getData().getVerifyToken().getToken(); //token默认30分钟时效,每次发起认证时都必须实时获取

try
{//SetCredentialsProvider
// GetVerifyTokenResponse response = client.getAcsResponse(getVerifyTokenRequest);
GetVerifyTokenResponse response = client.GetAcsResponse(getVerifyTokenRequest);
// token = response.getData().getVerifyToken().getToken();
token = response.Data.VerifyToken.Token;//token默认30分钟时效,每次发起认证时都必须实时获取
}
catch (ServerException e)
{
Console.WriteLine(e.ErrorCode);
}

//2. 服务端将认证URL(带token)传递给H5前端
//3. H5前端跳转认证URL
//4. 用户按照认证H5流程页面的指引,提交认证资料
//5. 认证流程结束跳转指定的重定向URL(指定方法参看:https://help.aliyun.com/document_detail/58644.html?#H5Server)
//6. 服务端查询认证状态(建议以服务端调接口确认的为准)
//GetStatus接口文档:https://help.aliyun.com/document_detail/57049.html

GetStatusRequest getStatusRequest = new GetStatusRequest();

getStatusRequest.Biz = biz;
getStatusRequest.TicketId = ticketId;

try
{
GetStatusResponse response = client.GetAcsResponse(getStatusRequest);
statusCode = Convert.ToInt32(response.Data.StatusCode);
}
catch (ServerException e)
{
Console.WriteLine(e.ErrorCode);
}

//7. 服务端获取认证资料
//GetMaterials接口文档:https://help.aliyun.com/document_detail/57641.html

GetMaterialsRequest getMaterialsRequest = new GetMaterialsRequest();
getMaterialsRequest.Biz = biz;
getMaterialsRequest.TicketId = ticketId;
if (1 == statusCode || 2 == statusCode)
{
//认证通过or认证不通过
try
{
GetMaterialsResponse response = client.GetAcsResponse(getMaterialsRequest);
//后续业务处理
}
catch (ServerException e)
{
Console.WriteLine(e.ErrorCode);
}

}

3.未完待续

最新文章

  1. 把int*传值给char*,打印出错误的数字
  2. iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸
  3. angular.js input
  4. IOS GCD 浅析
  5. 窗体移动API
  6. 【开发流程】土耳其CDD工具
  7. java学习面向对象之this
  8. [ios2]如何让IOS应用从容地崩溃 【转】
  9. 百度URL 部分参数
  10. 自己实现HashMap
  11. 利用/dev/urandom文件创建随机数
  12. 2017-2018-2 20155309南皓芯 Exp6 信息搜集与漏洞扫描
  13. 如何设置locale
  14. Centos7 LNMP 一键安装
  15. mysql乐观锁总结和实践(二)
  16. 关于Ocelot 网关结合Consul实现服务转发的坑爹问题
  17. 岭回归(Ridge Regression)
  18. oauth2-server-php for windows 的那些坑 (研究中...)
  19. GitHub原来也可以用SVN客户端的.
  20. JVM年轻代(young generation)老年代(old generation tenured)持久代(permanent generation)GC

热门文章

  1. (转) c/c++调用libcurl库发送http请求的两种基本用法
  2. 编写高质量代码改善C#程序的157个建议——建议124:考虑在命名空间中使用复数
  3. 编写高质量代码改善C#程序的157个建议——建议122:以<Company>.<Component>为命名空间命名
  4. no getter for property named 'power_state
  5. Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
  6. SharpMap入门教程
  7. [LeetCode 题解]:Candy
  8. 【转】基于Redis实现延时队列服务
  9. [NetCore学习记录]第一章.使用netcore撸个简单的增删改查
  10. Spring Boot - 记录日志