美文网首页Web前端之路
node.js/koa 接入百度OCR接口所需的access_t

node.js/koa 接入百度OCR接口所需的access_t

作者: 羊太郎_胡一 | 来源:发表于2019-08-01 08:42 被阅读7次

    近期使用nodejs开发后端,对接百度OCR(文字识别 图片识别)的时候需要获取access_token,以下是官方的node实例代码。

    var https = require('https');

    var qs = require('querystring');

    const param = qs.stringify({

        'grant_type': 'client_credentials',

        'client_id': '您的 Api Key',

        'client_secret': '您的 Secret Key'

    });

    https.get(

        {

            hostname: 'aip.baidubce.com',

            path: '/oauth/2.0/token?' + param,

            agent: false

        },

        function (res) {

            // 在标准输出中查看运行结果

            res.pipe(process.stdout);

        }

    );

    res.pipe(process.stdout); 这行代码直接在控制台打印出来了,我们可以看到一个JSON的string类型,复制出来我们就可以看到JSON格式了,以下截图图1所示:

    图1

    图1所示的红色框框中的access_token就是我们所要的。现在问题来了,现在只能打印到控制台,在js中,我们保存或者接收数据的时候,往往都是定义一个变量来接收数据,但node的话,如果数据量很大的话,系统就要开辟与之对应的内存,会占用较大内存,这时候就用到了pipe去进行读写流操作,更加优雅的完成任务,下面先贴代码。

    https.get({

        hostname: 'aip.baidubce.com',

        path: '/oauth/2.0/token?' + param,

        agent: false

      }, function (res) {

        // 在标准输出中查看运行结果

        res.pipe(process.stdout);

        // 写入文件

        res.pipe(fs.createWriteStream('./baidu-token.json'));

        }

      );

    在这我通过fs创建了一个写入流,这样便可以把对应的内容保存到本地对应的文件里,需要用的时候可以通过fs.readFileSync('./baidu-token.json', 'utf8');读取文件内容 , 非常方便。


    前台获取access_token后,发现接口调用失败了,返回了几个错误码,我把我遇到的怎么处理的方法分享一下。

    1、code:6 , msg:'No permission to access data'  没有权限调用,检查自己的Api Key 和 Secret Key 是否正确,然后查看该Api Key 对应的项目中你是否加入了你所需要的OCR接口,此处在百度控制台即可查看。

    2、code:216201, msg:'image format error'  请求的参数应该是string类型,而不是json类型,应该用Qs.stringify({ image: img })来转义一下,当然得先import Qs from 'qs';


    暂时遇到的问题就这些,以后有内容还会继续补充,欢迎提问。

    相关文章

      网友评论

        本文标题:node.js/koa 接入百度OCR接口所需的access_t

        本文链接:https://www.haomeiwen.com/subject/hgufdctx.html