更新记录

1.0.3(2023-08-07)

去掉demo

1.0.2(2023-07-05)

兼容android 微信小程序

1.0.1(2023-04-17)

优化打包

查看更多

平台兼容性

阿里云 腾讯云 支付宝云
×
Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.3.0 × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


预览

小程序只实现了核心功能,没啥人用,暂时没继续优化和加新功能了

技术交流群

qrcode.jpg

注意

  1. 此插件虽然是云开发项目插件,但是核心代码就是components/gg-camera组件,非云开发项目也可以复制到项目里使用。
  2. 只测试了微信小程序其他端自行测试吧

快速上手

  1. 使用 HBuilderX 导入插件
  2. 关联 uniCloud 服务空间(创建 uniCloud 服务空间
  3. 运行 uniCloud -> database -> db_init.josn(右键:初始化云数据库(包含Schema和校验函数))
  4. 配置 uniCloud -> cloudfunctions -> common 云函数 uni-config-center -> uni-id -> config.json 文件 官方文档
  5. 修改配置文件需重新右键上传 uni-config-center、uni-id 云函数
    1. uni-id
      "passwordSecret": [{
      "version": 1,
      "value": "xxxxxxxxxxxxxxxxxxx"
      }],
      "tokenSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "tokenExpiresIn": 259200,
      "tokenExpiresThreshold": 600,
      "passwordErrorLimit": 6,
      "passwordErrorRetryTime": 3600,
      "autoSetInviteCode": false,
      "forceInviteCode": false,
      "bindTokenToDevice": false,
    2. 配置微信小程序appid和秘钥
      "mp-weixin": {
      "oauth": {
      "weixin": {
      "appid": "xxxxxxxxxxxxxxxxxxx",
      "appsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
      }
      },
  6. 运行 uniCloud -> cloudfunctions(右键:上传所有云函数、公共模块及actions)
  7. 配置 manifest.json 官方文档
    A. 基础配置
    B. 微信小程序配置
  8. 执行 npm install 安装依赖
  9. 工具栏 -> 运行(R) ->
    A. 运行到小程序模拟器(微信开发者工具[体验微信小程序版本])
  10. 注意点(重要、重要、重要)
    A. 小程序中使用 uniCloud 白名单配置
    B. 发布到线上一定要用【发行】后提交到微信平台(没有自动打开微信开发者工具,请看下一节),不要用【运行】
  11. 有任何问题欢迎加群 244974288 咨询。

一键更新此插件

  1. 在项目根目录package.json右键点击,“从插件市场更新”。
  2. 特别注意:更新合并时,去掉勾选 uni_modules --》 uni-config --》 uniCloud --》 ... --》 uni-id,以及manifest.json,防止配置文件被重置,需要重新配置。更新后注意检查其他配置文件。
  3. 如果出现数据不见了,极有可能是因为你更新版本导致manifest.json里的unicloud appid被重置,然后你点了重新生成,unicloud是通过这个appid做数据隔离的。
  4. 每次更新一定要测试功能和数据没问题才上线,最容易出现的就是unicloud appid变了导致数据不见了,unicloud appid改为之前的就行了。

常见问题

1. 为何修改配置文件密码加密Token后,无法登录?

A. 修改说明 需新增密码加密 Token version。
B. 修改passwordSecret会导致老用户使用密码无法登录,修改tokenSecret会导致所有已经下发的token失效。
C. 官方详细介绍

2. 为何微信小程序授权登录没反应或登录不了?

A. 确认是否已在配置文件中填写对应的 appid、appsecret。
B. 修改后的配置文件是否已右键重新上传。

3. 运行后提示 Error: Cannot find module 'uni-read-pages'。

A. 需执行 npm install 安装依赖。 需要nodejs环境,如果没有就把__node_modules__文件夹重命名为node_modules

4. 点击发行没有自动打开微信开发者工具

A. hbuilderx的bug,手动打开微信开发者工具后导入unpackage/dist/build包,取个名字与开发包做区分。

B.勾选未使用云开发(不要勾选微信云开发)。

二次开发

1. system云函数

.该云函数封装了安全规则和子路由,支持云函数和定时器(不校验安全规则)和url方式访问 .子路由代码放在routers目录,前端通过giegie/aaa/bbb访问云函数giegie下routers目录子路由 A.package.json中cloudfunction-permission节点用于配置子路由安全规则

"cloudfunction-permission": {
"login":true,
"config": true,
"ad-calc-fencheng": "auth && auth.uid && auth.role.includes('admin')",
"ad-calc-score": true,
"ad-trace": "auth && auth.uid",
"invite_list": "auth && auth.uid",
"qrcode": true,
"withdraw": "auth && auth.uid",
"access_token": true
}

B.package.json中cloudfunction-config.triggers节点用于配置子路由定时器

"cloudfunction-config": {
"memorySize": 256,
"timeout": 10,
"triggers": [
{
"name": "access_token,ad-calc-score",
"desc": "注释:name指定子路由名称,多个用逗号隔开(官方目前triggers数组只支持一个所以用逗号隔开)",
"type": "timer",
"config": "33 33 * * * * *"
}
],
"path": "",
"runtime": "Nodejs8"
},

C.context.currentUser用于获取当前登录用户 定时器和url方式访问没有该属性

let {uid:user_id} = context.currentUser;

2. 前端 .request统一封装了http 云函数和云数据库请求 .页面和组件vue里面通过this.$request('请求路径')发起请求 .请求路径定义在common/request/api_defines目录

//云数据库使用方式
//api_defines目录下接口定义
user_schema: {
url: 'uni-id-users',
auth: true,
method: 'clouddatabase',
desc: '用户信息',
},
//接口调用
let {total:total3} = await this.$request('user_schema',(collection,database,command)=>{
return collection
.where({
invite_time:command.gt(new Date(new Date().toDateString()).getTime()),
inviter_uid:command.all([this.userInfo.id])
})
.count();
})
//云函数使用方式
        //api_defines目录下接口定义
        config: {
          global: {
            url: 'giegie/config',
            auth: false,
            method: 'cloudfunction',
            desc: '加载全局配置',
          },
        },
        //接口调用
    let {total:total3} = await this.$request('config.global',{})

3. 增加水印

继承WaterMark,并实现render函数

image.png

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问