前言
小程序云开发还算挺火的,我也去尝试了一下,确实是非常省事,比如以前获取openid,获取小程序码之类的接口都需要通过后端,用小程序云开发的话直接调用api就可以拿到了。 这意味着咱前端也可以独立开发一个完整的小程序了,迈向全栈的一个近道~~
uniCloud你可以理解为跟uni-app配套的云开发。 同样可以发布到多端。 只是坑比较多,我就此来记录一下我的踩坑历程吧
创建项目
- 本次使用 阿里云 做为云开发服务器(ps:坑点之一)
这个直接看官网吧
创建云函数
这个我要做的一个功能点是用户上传图片,然后使用canvas编辑绘制后保存到相册
这个其中就要使用到微信自带的图片内容安全识别API
刚开始我的想法是用户在小程序端使用wx.chooseImage
拿到图片的路径,然后传给云函数,云函数中直接云调用openapi.security.imgSecCheck
就完事了。 想法很美好,可现实是openapi.security.imgSecCheck
是小程序中的api,咱用uniCloud可没有这个方法。那怎么办,别怕,遇事不要慌,去uniCloud插件市场找一下有没有对应的插件,一搜还真有,nice。叫做mp-cloud-openapi提供的微信、支付宝等小程序云端能力的封装。
好,我引入后调用报个了undefined错,调试后发现居然没security.imgSecCheck
,获取access_token这个倒有。
看来只能云调用方式是行不通了,只能使用https调用
这个就比较常规了,就是用请求方式先拿到access_token,然后在调用安全接口,看代码吧
第一版:
exports.main = async ({
imgUrl}, context) => {
//event为客户端上传的参数
console.log('event : ', fileID)
let result = null
// 获取access_token
const res = await uniCloud.httpclient.request('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret', {
// 此处appid和seceret要使用自己真实的
dataType: