一、获取app_key和secret_key
1.1首先需要去百度智能云搜索图像识别
1.2创建应用--领取免费资源(我已经创建了应用,这个是可以免费使用一年的,测试够了)
1.3获取app_key和secret_key
点进上一张图的管理应用即可查看相应信息
二、获取token
2.1首先判断storage中是否已经有token
onLoad() { // 自定义头部导航栏文字 wx.setNavigationBarTitle({ title: '垃圾搜索' }); //获取storge中的token var that=this; wx.getStorage({ key:'expires_in', success(res){ // 获取成功,证明本地已存有相关token const newT =Date.parse(new Date())/1000/1000; // // 用当前时间和存储的时间判断,token是否已过期 if (newT > parseInt(res.data)) { // token过期,重新获取token that.getToken(); } else { // 获取本地缓存的token let token=wx.getStorageSync('access_token'); that.setData({token:token}); } },fail(){ that.getToken(); } }) },
2.2 getToken函数
// 获取token getToken:function(){ var that=this; // client_id:app_key需要自己去百度智能云创建相应的应用后获取 //client_secret:Secret Key const url = 'https://aip.baidubce.com/oauth/2.0/token'+ '?grant_type=client_credentials'+ '&client_id=YDVwACVuT2Zb2UgmIMpxoGg5&client_secret=64HL4G33rd9H0SjseOe6M8aj5jm9kLNP'; wx.request({ url:url, method: 'POST', success: res => { console.log(res) let thaRres=res.data; // 将access_token存储到storage中 wx.setStorage({ key:'access_token', data:thaRres.access_token }); wx.setStorage({ key:'expires_in', data:thaRres.expires_in }); that.setData({token:thaRres.access_token}); /* access_token: 要获取的Access Token; expires_in: Access Token的有效期(秒为单位,一般为1个月); */ }, fail: () => {} }); },
三、进行图像识别
// 点击相机图标时 cameraTap:function(){ console.log('点击相机'); var that=this; wx.chooseImage({ success: res => { wx.getFileSystemManager().readFile({ filePath: res.tempFilePaths[0], //选择图片返回的相对路径 encoding: 'base64', //编码格式 success: res => { //成功的回调 // 图片 wx.showLoading({ title: '识别中...', }) var image = res.data; // 文字识别 wx.request({ url: 'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general?access_token='+that.data.token, data: { image: image }, header: { 'Content-Type': 'application/x-www-form-urlencoded' }, method: 'POST', success(res) { console.log(res.data) wx.hideLoading({ success: (res) => {}, }) }, fail:()=>{ wx.hideLoading(); wx.showToast({ title: '图片识别失败,请重试!', icon: 'none' }); } }) } }) } }) },
至此大功告成,返回的数据如下:
result就是最终需要的数据了!