资讯专栏INFORMATION COLUMN

利用Leancloud开发小程序-生成小程序二维码

paulquei / 1752人阅读

什么是Leancloud

Leancloud是国内有名的BaaS提供商,什么是BaaS提供商呢?通俗点讲就是给你提供增删改查等后台服务的API,你通过这些API就可以将数据存储在云端数据库中,而不需要关系服务器环境和里面的处理逻辑,它提供的SDK有js、java、object-c、python等等。

类似的BaaS提供商还有谷歌的firebase(www.firebase.com),但容易被墙不推荐。

所以我们可以不需要自己搭建后台环境就可以实现小程序的后端需要了,这样可以极高的提高开发效率,缩短开发周期。

如何使用Leancloud进行小程序开发 关于增删改查

Leancloud提供了完整的增删改查API,只要根据文档给到API进行调用就行,这个就不详细描述了,请看文档:https://leancloud.cn/docs/lea...

关于小程序授权登陆

下面地址详情描述了如何实现授权登陆:
https://leancloud.cn/docs/wea...用户系统

关于小程序需要后端的API调用

这里所说的需要后台的API调用,指类似:微信支付、二维码生成、微信提现、微信发红包、发送模版信息等等。
要实现这些功能必须使用 Leancloud的云引擎中的云函数

什么是云函数

就是我们可以简单的编写一个可以执行的node函数部署到leancloude的云引擎中,直接使用leancloud的API就可以直接执行你编写的函数,不需要像以前编写后端需要关心后端服务器环境那么复杂,只需要执行一段指令将云函数部署到云端就可以执行了。
详情请看:https://leancloud.cn/docs/lea...

如何编写云函数

https://leancloud.cn/docs/lea...
这里有详细说明,我就不赘述了。

如何部署云函数

我们这里介绍如何使用github部署:

注册并创建leancloud应用:这个就不用说把,网站:https://leancloud.cn

设置云引擎
进入第一步创建的应用-云引擎-设置,将git的地址填进去,这个代码库可以fork我的代码仓库(https://github.com/jasondu/le...),然后复制Deploy Key,然后到自己fork的github设置页面中的【Deploy keys】选项,添加一个Deploy Keys,Title随便写,Key就是刚才复制的,然后点击保存即可。

部署云引擎
回到云引擎-部署,“分支或版本号”填入master,点击部署就可以部署云引擎了。

下面我们通过“生成小程序二维码”来讲解如何使用云函数开发小程序后台

生成小程序二维码 小程序二维码分类:
从类型分类:

小程序二维码:那个圆形的二维码

普通二维码

是否可以无限生成分类:

无限

有限

这几种分类对应着下面三个接口:

小程序二维码、有限的
https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN

小程序二维码、无限的
https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

普通二维码、有限的
https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

云函数规划

入参验证

获取accessToken

调用二维码生成接口获取二维码二进制流

保存二维码到leancloud

代码
AV.Cloud.define("getwxacode", function (request, response) {
    const params = request.params;
    const requireParams = ["type"];
    let url;

    switch (params.type) {
        case 1:
            url = "https://api.weixin.qq.com/wxa/getwxacode";
            requireParams.push("path");
            break;
        case 2:
            url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit";
            requireParams.push("page");
            requireParams.push("scene");
            break;
        case 3:
            url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode";
            requireParams.push("path");
            break;
    }
    // 1. 入参验证
    requireValidate(params, requireParams).then(params => {
        // 2. 获取accessToken
        wxapi.getLatestToken((err, accessToken) => {
            // 3. 调用二维码生成接口获取二维码二进制流
            axios.post(url, params, {
                params: {
                    access_token: accessToken.accessToken,
                    dataType: "JSON",
                },
                responseType: "arraybuffer"
            }).then((res) => {
                // 4. 保存二维码到leancloud
                if (typeof res.data === "undefined") {
                    return response.error("生成二维码失败");
                } else {
                    const imageFile = new AV.File("file-qrcode.png", res.data);
                    imageFile.save().then((res) => {
                        return response.success(res);
                    }, (error) => {
                        return response.error(err);
                    });
                }
            });
        });
    }).catch(err => {
        return response.error(err);
    });
})

requireValidate: 验证入参的方法
注意:这里获取二维码必须要用axios的方式进行请求,否则返回的图片信息会保存失败

调用云函数(小程序代码)
const AV = require("../libs/leancloud/av-weapp-min.js");
const paramsJson = {
    type: 1,
    path: "/pages/index/index"
};
AV.Cloud.run("getwxacode", paramsJson).then(function (data) {
    // 调用成功,得到生成二维码的链接
    console.log(data.url);
}, function (err) {
    // 处理调用失败
    console.log(err);
});
代码地址

https://github.com/jasondu/le...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88368.html

相关文章

  • 如何从零入门React?实战做个FM应用吧

    摘要:面试造航母,工作拧螺丝,新公司面试技术官要求会技术栈。然而公司项目暂时并没有用到,不过为了提升实战经验,还是在业余时间捣腾出一个,以下是项目介绍。前段为了学习小程序的开发,做了个小程序名叫口袋吉他,这也是个人兴趣驱使的开发想法。 面试造航母,工作拧螺丝,新公司面试技术官要求会react技术栈。 问:有使用过React么?答:没,只使用过Vue。又问:给你一星期能上手开发么?答:可以(一...

    codecook 评论0 收藏0
  • 周报系统,支持导出和邮件提醒

    摘要:并利用提供的云引擎服务实现在周五给全员发送邮件提醒填写周报,周六周日分别再次对未填人员发送邮件进行填写提醒。虽然提供的免费云引擎,本身就支持服务,但是免费版是做测试用的,会自动休眠,不够稳定,经常挂掉。 This just is a README. showImg(https://segmentfault.com/img/remote/1460000013260535);showImg...

    cheng10 评论0 收藏0
  • 周报系统,支持导出和邮件提醒

    摘要:并利用提供的云引擎服务实现在周五给全员发送邮件提醒填写周报,周六周日分别再次对未填人员发送邮件进行填写提醒。虽然提供的免费云引擎,本身就支持服务,但是免费版是做测试用的,会自动休眠,不够稳定,经常挂掉。 This just is a README. showImg(https://segmentfault.com/img/remote/1460000013260535);showImg...

    baoxl 评论0 收藏0
  • 微信程序音乐播放器,leancloud后端支持,体验程序数据绑定,Promise较为优雅解决回调

    摘要:初窥添加音乐到收藏最近列表歌词滚动从一个开始微信开发者工具生成目录如下主页日志页面工具大体为每一个即是一个页面文件,每个页面有一个文件规定描述页面的这四个文件必须具有相同的路径与文件名。 showImg(https://segmentfault.com/img/remote/1460000009405866);showImg(https://segmentfault.com/img/r...

    go4it 评论0 收藏0

发表评论

0条评论

paulquei

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<