云开发小程序给封永久,跨账号环境共享数据库给另一个小程序

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

云开发小程序给封永久,跨账号环境共享数据库给另一个小程序

有一个云开发的资源下载小程序,经过一系列操作之后给停封我们应该怎么办呢?

如果是星宿只需要更新一个新的小程序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,
    },
  })
}
(2)
上一篇 07/12/2022
下一篇 08/10/2022

相关推荐

发表回复

您的电子邮箱地址不会被公开。