摘要:针对于具备刹时流量、业务场景比较简单的小程序,开发者借助FunctionGraph,能够方便快捷的搭建一个强壮的小程序后盾。
本文分享自华为云社区《智慧校园想搞好,FunctionGraph少不了——从零开发签到小程序so easy!》,作者: 一只程序猿。
背景
华为romalab实验室在构建智慧教育领域app时,以FunctionGraph为试点,尝试基于FunctionGraph云函数开发一个签到小程序。针对于具备刹时流量、业务场景比较简单的小程序,开发者借助FunctionGraph,能够方便快捷的搭建一个强壮的小程序后盾。
免登方案设计与前后端通信逻辑
计划概述
App在登录当前,才会关上小程序。如果小程序和app的用户体系统一,用户就不必再次登录。在首次拜访小程序的时候,调用智慧校园app的免登接口,获取用户信息,而后小程序构建本人的登录状态。因为云函数自身属于无状态的服务,须要借助受权服务器(或者签发jwt)实现本人的接口认证。
小程序在调用后盾业务接口时,携带票据。
交互流程图
(注:智慧校园app是基于华为外部的挪动使能平台OneMobile构建,此处的OneMobile就能够了解为智慧校园app)
流程形容
流程形容:
- 关上签到小程序,调用getToken()获取ssoTikect票据信息
- 小程序将ssoTicket传入到认证函数A中,在A中去调用智慧校园app的开放平台接口,依据ssoTicket取得以后的用户信息
- 拿到用户信息当前,依据该用户信息,生成票据token ,返还给小程序
小程序调用业务函数B,在申请中携带token
业务函数B在拿到申请当前,校验token、换取用户信息
校验通过,依据获取的用户信息,执行业务性能,返还后果
业务实现
角色权限管理策略
智慧校园app自身对小程序有着严格的权限管制体系,能够在用户、组织、岗位等维度,对小程序的可见性进行管制。因为签到打卡这个业务场景比较简单,且人员有着显著的角色特色,老师设置签到规定,学生扫码进行签到。
联合以后的现状,此次签到小程序不再独自构建本人的权限管理体系,而是依靠于智慧校园app自身的权限体系。提供两个小程序,一个是老师应用的“老师上课点名”小程序,用于帮助老师生成签到二维码。一个是“签到打卡”小程序,用于学生上课签到。由智慧校园app在入口处对小程序的使用者进行管控。
App扫码签到实现
如何签到
签到是通过扫描二维码进行签到,在扫码的时候,将扫码失去的信息,传递到后盾,后盾对二维码中的课程信息与签到规定进行比对后,返还签到后果。小程序依据不同的签到后果,给用户展现不同的页面。
如何扫码
以后扫码的入口有两个,一个在小程序外部,一个在app的右上角。二者调用的都是零碎的扫码能力。
因为在app上扫码可能进入签到小程序并进行签到,就须要签到二维码不仅仅要携带课程信息,同时也要携带要关上小程序的信息。
如何实现扫码进入小程序
智慧校园app的扫一扫能力,预制了一些通用的能力,当扫码失去的后果是某一个固定类型的数据格式,就会主动实现一些操作。
如扫码能辨认关上小程序的数据格式为:native://openapp?data={"appid":"88157779"},而关上小程序的能力,其实是封装了jssdk的xm.openApp()的能力。xm.openApp()容许开发者能在一个小程序外面关上另外一个小程序。
App扫码签到代码实现流程图
FunctionGraph实现签到业务
开发函数反对多种语言类型,如nodejs、python、java等。后端逻辑中,除了一般业务逻辑(如跟数据库交互)之外,最次要的是跟智慧校园app的交互,如获取用户信息。交互模式是接口调用,能够间接援用封装好的客户端来实现,以nodejs开发语言为例,间接引入npm包即可。
开发后端函数逻辑
认证函数
App在登录当前,才会关上小程序。如果小程序和app的用户体系统一,用户就不必再次登录。而小程序如何在不登录的状况下想要拿到以后应用该App的用户,就须要借助app的接口,实现免登。认证函数的作用就是获取以后app的使用者,并且可能签发小程序本人的自定义登录状态,如签发一个jwt
认证函数的入参为小程序前台从app获取到的ssoTicket。
具体实现如下:
- 获取智慧校园app的api调用SDK代码,执行npm pack打包,生成OneMobileSDK-0.0.1.tgz, 在新我的项目中装置该依赖npm install OneMobileSDK-0.0.1.tgz,而后将node-modules文件压缩成zip,上传到FunctionGraph的依赖仓库中去。在创立函数时增加该依赖。
a.创立依赖包
b.上传依赖文件
c.增加依赖
- 参照步骤1,将mysql-node的依赖,退出到FG的依赖仓库中去,在创立函数时增加该依赖。
3.调用OneMobileBaseSDK外面的getUserInfoBySsoTicket(ssoTicket),获取用户信息
a.在代码中援用SDK
b.调用接口
- 校验用户信息。
- 依据获取到的用户信息,生成业务接口的调用凭证,返还给小程序前台。
签到函数
对于签到函数,在操作流程下面和认证函数类似,这里不做过多的论述。其主体的流程如下:
- 创立函数时,增加mysql-node相干依赖
- 校验签到信息
- 将签到后果入库
- 返还签到后果给小程序
接口凋谢
函数开发实现当前,须要将函数凋谢给小程序应用,具体操作步骤如下。
- 在函数详情页面,点击触发器页签
2.创立触发器,触发器类型抉择APIG。因为代码中有认证逻辑,所以网关层不做认证
3.获取创立的APIG调用地址,小程序前端即可依据业务须要,调用相应的rest接口。
总结
此次小程序开发辨认到的问题
智慧校园app
- FullCode模式下,页面的碎片化问题亟待解决,智慧校园app短少页面预览工具以及通用的组件库。
- 免登接口只能在容器中能力调用,而调试的时候局部接口强依赖ssoTicket,只能通过集成vconsole,而后在手机中执行getToken()指令才能够获取ssoTicket。
- 公司外部没有调试环境,公网调测,每次都须要传包到开放平台,操作起来很麻烦。
- 文档仍需补齐,一些非常规能力,如扫码关上小程序性能,没有相应的文档撑持
- 短少撑持一套前端调测多套环境的解决方案
FunctionGraph
- 代码散布在3个中央:前台代码由智慧校园app托管运行、网关api间接配置在APIG、函数代码在Function里。性能调试胜利后,如果有一键归档(或者下载)性能或者下载工具会比拟好。同样,心愿也有一键部署性能的工具。
- 以后加密配置粒度是单个函数,以连贯数据库为例,多个函数连贯同一个数据库,须要在每个函数中都减少数据库账号密码加密配置,繁琐而且无奈保证数据统一。
能力待晋升
智慧校园app
- 参照微信,求助IDE团队,为提供小程序开发工具
- 参照welink为开发者提供开放平台的调测工具,并能一键生成不同语言的接口调用代码
- 构建小程序专门的云开发平台,小程序流量走App基座的网关,买通各个云服务,服务之间鉴权由开发平台承接,小程序开发者更专一于业务能力构建。
FunctionGraph
- 可能通过函数利用生命周期治理性能解决函数开发、部署、公布(到APIG)一体化的问题
- 可能实现用户或租户级别的配置共享
参考文档:
https://support.huaweicloud.c...
https://www.huaweicloud.com/p...
点击关注,第一工夫理解华为云陈腐技术~