Nodejs调用百度身份证认证API

简介: 今天给大家分享一下,这几天调用身份证认证API的流程。在此是使用nodejs写的后台。

今天给大家分享一下,这几天调用身份证认证API的流程。在此是使用nodejs写的后台。


前提



1.我们需要使用是百度的API,你就必须有一个百度智能云的账号。直接百度可能找不到!在此,附上网址链接:login.bce.baidu.com

2.注册在此不过多赘述,登录成功后跳转到如下界面:


3. 点击产品服务-人工智能-文字识别。4. 点击进入如下界面。5. 因为我已经创建了一个应用,在此,大家可以点击创建应用,填写以下名称,一切默认,点击立即创建即可。6. 在你的应用列表里就会出现一个应用。在接下来你要使用的AppID、Appkey、Secret Key都在此复制。


安装



  1. 我选择的是Node-SDK安装,再调用接口。安装Node-SDK方法很多,你可以到官网上去下载然后把你所需要的拖到自己的文件中,你也可以到GitHub上搜索下载。
  2. 我选择的是直接在安装好的node_modules基础上,直接输入命令:npm install baidu-aip-sdk


调用



  1. 我是直接使用npm命令导入baidu-aip-sdk模块,所以,在此之前默认项目框架已经搭建完好。(采用MVC结构)目录大致如下:


  1. 为方便使用,就不在此再创建文件,在你所需要认证的文件内,直接新建对象。(我是在个人中心的应用层中写入)。
  2. 在应用层内调用baidu-aip-sdk模块,设置APPID/AK/SK。以下步骤均在应用层操作。


var AipOcrClient = require("baidu-aip-sdk").ocr;
// 设置APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";
// 新建一个对象,建议只保存一个对象调用服务接口
var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);
var HttpClient = require("baidu-aip-sdk").HttpClient;
// 设置request库的一些参数,例如代理服务地址,超时时间等
// request参数请参考 https://github.com/request/request#requestoptions-callback
HttpClient.setRequestOptions({timeout: 5000});
// 也可以设置拦截每次请求(设置拦截后,调用的setRequestOptions设置的参数将不生效),
// 可以按需修改request参数(无论是否修改,必须返回函数调用参数)
// request参数请参考 https://github.com/request/request#requestoptions-callback
HttpClient.setRequestInterceptor(function(requestOptions) {
    // 查看参数
    console.log(requestOptions)
    // 修改参数
    requestOptions.timeout = 5000;
    // 返回参数
    return requestOptions;
});


  1. 上传身份证正面。首先需要完成能够上传图片的基础上,再进行身份证识别。上传图片路由、应用层:


//router文件
router.post('/idCardFront', function(req, res, next) {
        userController.idCardFront(req, res)
    })
//controllerse文件
 idCardFront: function(req, res) {
        var form = new formidable.IncomingForm() //创建上传表单对象
        form.uploadDir = path.join(__dirname, '..', '/public/idCard') //设置上传文件的路径
        form.keepExtensions = true //设置保留上传文件的扩展名
        form.parse(req, function(err, fields, files) {
            if (err) {
                res.send('头像上传错误!')
            }
            console.log('...................')
                //fields是上传的表单字段数组,files是上传的文件列表
                // console.log(files)
                //保存图片路径到数据库
                //1.获取当前用户编号
            let userId = req.user[0].base_info_Id
                //2.获取当前用户的图片名称
            let headPic = path.parse(files.file.path).base
                // console.log('jpg格式:' + headPic)
                // console.log(files.file.path)
                res.json({ code: 200, data:headPic, msg: '身份证上传成功!审核通过!' })
        })
    }


  1. 在识别身份证之前,需要将你存在服务器的图片读取并以base64格式显示。


//读取服务器文件,以base64显示
            let filePath = files.file.path
            let bitmap = fs.readFileSync(filePath);
            let image = Buffer.from(bitmap, 'binary').toString('base64');


  1. 调用百度接口。


client.idcard(image, idCardSide).then(function(result) {
                results = JSON.stringify(result)
                 console.log(results)
                var id = {}
            res.json({ code: 200, data: results, msg:'身份证上传成功!审核通过!' })
            }).catch(function(err) {
                // 如果发生网络错误
                console.log(err);
                res.json({ code: 200, msg: '身份证上传成功!审核不通过!' })
            });


7.运行postman,传入图片,进行身份证识别。



可以在服务器看到身份证上的信息代表认证成功!在此附上标准认证成功返回的json格式:


{
    "log_id": 2648325511,
    "direction": 0,
    "image_status": "normal",
    "idcard_type": "normal",
    "edit_tool": "Adobe Photoshop CS3 Windows",
    "words_result": {
        "住址": {
            "location": {
                "left": 267,
                "top": 453,
                "width": 459,
                "height": 99
            },
            "words": "南京市江宁区弘景大道3889号"
        },
        "公民身份号码": {
            "location": {
                "left": 443,
                "top": 681,
                "width": 589,
                "height": 45
            },
            "words": "330881199904173914"
        },
        "出生": {
            "location": {
                "left": 270,
                "top": 355,
                "width": 357,
                "height": 45
            },
            "words": "19990417"
        },
        "姓名": {
            "location": {
                "left": 267,
                "top": 176,
                "width": 152,
                "height": 50
            },
            "words": "伍云龙"
        },
        "性别": {
            "location": {
                "left": 269,
                "top": 262,
                "width": 33,
                "height": 52
            },
            "words": "男"
        },
        "民族": {
            "location": {
                "left": 492,
                "top": 279,
                "width": 30,
                "height": 37
            },
            "words": "汉"
        }
    },
    "words_result_num": 6
}


这样,身份认证就完成啦!


作者:ClyingDeng

链接:https://juejin.cn/post/6844903952090136590

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
2月前
|
缓存 JavaScript 前端开发
深入浅出:使用Node.js构建RESTful API
【9月更文挑战第3天】在数字化浪潮中,后端开发如同搭建一座连接用户与数据的桥梁。本文将带领读者从零开始,一步步用Node.js搭建一个功能完备的RESTful API。我们将探索如何设计API的结构、处理HTTP请求以及实现数据的CRUD操作,最终通过一个简单的实例,展示如何在真实世界中应用这些知识。无论你是初学者还是有一定经验的开发者,这篇文章都会为你揭示后端开发的奥秘,让你轻松入门并掌握这一技能。
97 3
|
6天前
|
API
通用图片搜索-百度源免费API接口教程
该接口用于搜索百度图片,支持通过关键词、页码、结果数量等参数获取图片搜索结果。请求方式为POST或GET,需提供用户ID和KEY,可选参数包括关键词、页码、结果数量及返回源类型。返回结果包含状态码、信息提示、结果集、当前页码、最大页码和结果数量。示例中提供了GET和POST请求方法及返回数据示例。
|
12天前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
22天前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
38 4
|
15天前
|
JavaScript 前端开发 NoSQL
深入浅出:使用Node.js构建RESTful API
【10月更文挑战第35天】在数字时代的浪潮中,后端技术如同海洋中稳固的灯塔,为前端应用提供数据和逻辑支撑。本文旨在通过浅显易懂的方式,带领读者了解如何利用Node.js这一强大的后端平台,搭建一个高效、可靠的RESTful API。我们将从基础概念入手,逐步深入到代码实践,最终实现一个简单的API示例。这不仅是对技术的探索,也是对知识传递方式的一次创新尝试。让我们一起启航,探索Node.js的奥秘,解锁后端开发的无限可能。
|
1月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API 服务器
【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器
|
1月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
19 0
|
1月前
|
JSON JavaScript API
Node.js RESTful API
10月更文挑战第8天
15 0
|
1月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API
【10月更文挑战第3天】 使用 Node.js 和 Express 构建 RESTful API
|
1月前
|
Web App开发 JSON JavaScript
使用 Node.js 构建一个简单的 RESTful API
【10月更文挑战第3天】使用 Node.js 构建一个简单的 RESTful API
下一篇
无影云桌面