多端应用使用云开发
在多端框架使用云开发等云能力的方法,以及相关的注意事项。
一、初始化改造
在「多端应用」中使用云开发时,需要在 cloud.init
时显式指定云开发环境所在的微信 AppID:
wx.cloud.init({
appid: 'wx1234567890', // 创建云开发环境的 AppID(小程序、公众号),不是多端应用 AppID
envid: 'env-id-example', // 云开发环境名称
})
二、多端登录模式使用
当「多端应用」中采用以下登录方式成功登录后,可以无缝使用云开发,和在微信小程序内使用无异。
- 唤起微信小程序登录
- 移动应用微信登录:此方式需要在「微信开发者工具-云开发-更多-环境共享-添加共享」给 移动应用 APPID 共享环境。
- 其他方式登录:如果使用其他方式登录,如手机号登录,需要在登录后去绑定微信,绑定成功后以其他方式登录,会自动关联移动应用微信账号,等同于使用移动应用微信登录。
在环境共享时,「多端应用」中填写的 APPID 应为 移动应用 APPID
(需是绑定多端应用的),如下所示
当使用实例模式初始化时,示例代码如下:
App({
async onLaunch() {
this.cloud = new wx.cloud.Cloud({
appid: 'wx1234567890', // 此应为移动应用 APPID
resourceAppid: 'wx987654321', // 云开发环境所归属的资源小程序、公众号或第三方平台 APPID
resourceEnv: 'env-id-example', // 云开发环境ID
})
await this.cloud.init()
}
})
wx.weixinAppLogin({
success (res) {
// 成功登录后会自动初始云开发,登录之前云开发只能用未登录模式。
}
})
登录前、登录失败情况下,使用云开发参考以下「未登录模式」
三、未登录模式使用
默认情况下,在多端框架内是无法正常使用云开发的,包括云函数、数据库等。这是因为多端环境中缺失微信登录态信息的(即 cloud.getWXContext
内无 OPENID
)。为此,我们提供了云开发的未登录模式,开发者可以进行以下配置,在多端环境中以未登录态模式使用云开发。
3.1 开启环境级别开关
为了允许未登录模式用户访问云环境资源,需要在「微信开发者工具-云开发-设置-权限设置-未登录用户访问云资源权限设置」打开相应云环境的开关。
3.2 配置云函数安全规则
调用云函数时,由于未登录模式的限制,还需要配置云函数的安全规则。参考安全规则如下(云函数 function1 支持未登录模式调用):
{
// * 为通配符,表示对所有函数适用
"*": {
// invoke 表示调用权限控制
// auth 包含鉴权信息,如果是未登录模式,则 auth == null
"invoke": "auth != null"
},
// 函数名,该规则优先级会高于通配符
"function1": {
// 表示允许所有来源调用,包括未登录用户
"invoke": true
}
}
3.3 配置数据库安全规则
访问数据库时,由于未登录模式的限制,还需要配置数据库安全规则。参考安全规则如下(所有用户可读,仅登录后创建者可写):
{
"read": true,
"write": "auth != null && doc._openid == auth.openid"
}
3.4 uploadFile 、cloudId 和其他接口
未登录模式下,不支持 wx.cloud.uploadFile
以及 cloudId
等需要登录态的接口。如有上传文件需求,建议使用“多端登录模式”,或者通过腾讯云对象存储等形式直接上传到存储桶中。cloudId
访问云存储建议改以 https url 形式访问。