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

来源:稀土掘金

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

目录
相关文章
|
7天前
|
缓存 JavaScript 前端开发
深入浅出:使用Node.js构建RESTful API
【9月更文挑战第3天】在数字化浪潮中,后端开发如同搭建一座连接用户与数据的桥梁。本文将带领读者从零开始,一步步用Node.js搭建一个功能完备的RESTful API。我们将探索如何设计API的结构、处理HTTP请求以及实现数据的CRUD操作,最终通过一个简单的实例,展示如何在真实世界中应用这些知识。无论你是初学者还是有一定经验的开发者,这篇文章都会为你揭示后端开发的奥秘,让你轻松入门并掌握这一技能。
27 3
|
11天前
|
JavaScript NoSQL API
深入浅出:使用Node.js构建RESTful API
【8月更文挑战第31天】本文将引导读者了解如何利用Node.js搭建一个高效、易于扩展的RESTful API。通过简单易懂的语言和逐步深入的内容组织,我们将一起探索Node.js在后端开发中的实际应用,包括环境配置、路由设计、数据处理与连接数据库等关键步骤。文章末尾,你将获得完整的项目代码示例,助你快速启动自己的API项目。
|
11天前
|
JavaScript 前端开发 API
深入浅出:使用Node.js搭建RESTful API的实践之旅
【8月更文挑战第31天】本文将带你踏上一次Node.js的探险之旅,通过实际动手构建一个RESTful API,我们将探索Node.js的强大功能和灵活性。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的实践经验和深刻的技术洞见。
|
18天前
|
JavaScript 前端开发 中间件
深入浅出Node.js:从零开始构建RESTful API
【8月更文挑战第24天】在数字化时代的浪潮中,后端开发作为支撑现代网络服务的骨架,扮演着至关重要的角色。本文将通过Node.js这一高效灵活的JavaScript运行环境,引领你步入后端开发的神秘世界。我们将从基础概念出发,逐步深入到实战操作,最终构建一个功能完备的RESTful API。无论你是编程新手还是前端开发者,这篇文章都将为你揭示后端开发的奥秘,让你轻松掌握使用Node.js进行API开发的实用技巧。
|
9天前
|
JSON JavaScript 中间件
深入浅出Node.js: 从零开始构建RESTful API
【8月更文挑战第34天】 在数字时代的浪潮中,掌握如何构建高效、可靠的后端服务是每一位开发者的必备技能。本文将通过浅显易懂的语言和实际代码示例,带领初学者走进Node.js的世界,一步步搭建起自己的RESTful API。无论你是编程新手,还是想扩展技术栈的老手,这篇文章都将是你的良师益友。让我们一起探索Node.js的魅力,开启后端开发之旅!
|
11天前
|
JSON JavaScript 中间件
深入浅出Node.js: 从零开始构建RESTful API
【8月更文挑战第31天】 在数字时代的浪潮中,掌握如何构建高效、可靠的后端服务是每一位开发者的必备技能。本文将通过浅显易懂的语言和实际代码示例,带领初学者走进Node.js的世界,一步步搭建起自己的RESTful API。无论你是编程新手,还是想扩展技术栈的老手,这篇文章都将是你的良师益友。让我们一起探索Node.js的魅力,开启后端开发之旅!
|
11天前
|
JavaScript 前端开发 API
深入浅出:使用Node.js打造简易Web API
【8月更文挑战第31天】本文旨在通过一个简单实例,引导读者快速入门Node.js并创建自己的Web API。我们将从零开始,一步步搭建起服务端应用,涉及环境搭建、基本语法、路由处理等关键知识点,最后以代码实例加深理解。无论你是前端开发者还是后端新手,这篇文章都能让你轻松上手,体验后端开发的乐趣。
|
12天前
|
JavaScript 前端开发 中间件
深入浅出Node.js: 从零开始构建RESTful API
【8月更文挑战第30天】本文是一篇针对初学者的Node.js教程,旨在引导读者通过实践学习如何利用Node.js和Express框架快速搭建一个RESTful API。文章将介绍Node.js的基本概念、环境配置、以及如何使用Express框架创建API端点。此外,我们还将探讨如何进行数据操作和错误处理,最终实现一个简单的待办事项管理系统API。通过本教程的学习,读者将能够掌握构建RESTful API的基础技能,并了解如何将其应用于实际项目开发中。
|
16天前
|
中间件 API 网络架构
Django后端架构开发:从匿名用户API节流到REST自定义认证
Django后端架构开发:从匿名用户API节流到REST自定义认证
11 0
|
18天前
|
API
【Azure Developer】调用Microsoft Graph API获取Authorization Token,使用的认证主体为 Azure中的Managed Identity(托管标识)
【Azure Developer】调用Microsoft Graph API获取Authorization Token,使用的认证主体为 Azure中的Managed Identity(托管标识)