你问她要不要花她肯定说不要 但你如果直接买给她 她肯定向全世界炫耀 行动永远比画大饼浪漫 爱是动词 行动才是最好的说明书

有一个云开发的资源下载小程序,经过一系列操作之后给停封我们应该怎么办呢?
如果是星宿只需要更新一个新的小程序ID即可,对云开发我们需要跨账号环境共享,当然官方也是有具体文档
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/resource-sharing/

操作步骤
1.被封的小程序A,添加新小程序B为共享资源环境权限
2.被封的小程序A新增cloudbase_auth函数
3.新小程序B请求共享资源环境数据库
步骤1
步骤1开通资源权限是可以看官方文档的,该部分还算是详细
步骤2
微信开发工具运行被封的小程序A,右键新增一个cloudbase_aut函数(最好本地也安装node_modules)

cloudbase_aut/index.js目录下添加代码
const cloud = require('wx-server-sdk')
cloud.init({ env: process.env.Env })
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
console.log(event)
console.log(wxContext)
// 跨账号调用时,由此拿到来源方小程序/公众号 AppID
console.log(wxContext.FROM_APPID)
// 跨账号调用时,由此拿到来源方小程序/公众号的用户 OpenID
console.log(wxContext.FROM_OPENID)
// 跨账号调用、且满足 unionid 获取条件时,由此拿到同主体下的用户 UnionID
console.log(wxContext.FROM_UNIONID)
return {
errCode: 0,
errMsg: '',
auth: JSON.stringify({
// 自定义安全规则
// 在前端访问资源方数据库、云函数等资源时,资源方可以通过
// 安全规则的 `auth.custom` 字段获取此对象的内容做校验,
// 像这个示例就是资源方可以在安全规则中通过 `auth.custom.x` 获取
x: 1,
}),
}
}
步骤3
我们打开新的小程序,就会提示我们已经拥有环境共享权限可以看到被封小程序A的云开发环境ID和数据库,Cms等

有2种方式来获取数据
方式1:小程序前端请求
// 加载函数
onLoad(options) {
this.fengrui();
},
// 必须用async异步 核心部分
async fengrui() {
// 声明新的 cloud 实例
var c1 = new wx.cloud.Cloud({
// 资源方 AppID
resourceAppid: '你的云环境ID',
// 资源方环境 ID
resourceEnv: '你的云环境ID',
})
// 初始化
await c1.init()
// 请求到A小程序的云函数名字以及参数(参数以自己项目为准)
c1.callFunction({
name: "frDate",
data: {
action: 'getArticlePaging',
filter: {
search: '1',
tag: '',
_id: ''
},
page: this.data.page,
}
})
.then(res => {
console.log(res)
}).catch(err => {
console.log(err, '失败')
})
}

方式2:新小程序B云函数请求
我们要明白目前所看到的云环境还是属于被封小程序A的,新小程序B是没有创建云环境的,所以我们在B小程序建立云开发环境,不如则会出现以下错误

在新建云开发环境后在app.js中添加云函数id
// app.js
App({
onLaunch() {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力');
} else {
wx.cloud.init({
env: 'frdata-你的云环境ID',
traceUser: true,
});
}
});
页面请求数据则函数则不需要修改,我们新建一个云函数(名称随意)代码如下
// 云函数入口文件
const cloud = require('wx-server-sdk')
// 云函数入口函数
exports.main = async (event, context) => {
console.log(event,'参数')
// 声明新的 cloud 实例
var c1 = new cloud.Cloud({
// 资源方 AppID
resourceAppid: '小程序A ID',
// 资源方环境 ID
resourceEnv: '小程序A ID',
})
// 跨账号调用,必须等待 init 完成
// init 过程中,资源方小程序对应环境下的 cloudbase_auth 函数会被调用,并需返回协议字段(见下)来确认允许访问、并可自定义安全规则
await c1.init()
// 完成后正常使用资源方的已授权的云资源
return c1.callFunction({
name: '小程序A 请求云函数名称',
// data内容以你项目具体参数为准
data: {
action: event.action,
filter: {
search: event.filter.search,
tag: event.filter.tag,
_id: event.filter._id
},
page: event.page,
},
})
}