热门搜索 :
考研考公
您的当前位置:首页正文

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

来源:东饰资讯网

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

var qs = require('querystring');

const param = qs.stringify({

    'grant_type': 'client_credentials',

    'client_id': '您的 Api Key',

    'client_secret': '您的 Secret Key'

});

    {

        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去进行读写流操作,更加优雅的完成任务,下面先贴代码。

    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';


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

Top