微信小程序共享云开发环境的代码配置

news2025/1/15 23:29:43

微信小程序共享云开发环境的代码配置

  • 1. 环境的分享配置
  • 2. 使用共享云开发环境的小程序代码编写
    • 2.1 初始化
    • 2.2 云函数调用
  • 4. 拓展:共享环境的小程序获取openId
    • 4.1 小程序密钥的设置
    • 4.2 小程序内代码编写
  • 4.3 云函数编写

小程序2022年进行了云开发付费调整,以前一个小程序对应一个云开发环境的奢侈用法不再适合普通开发者,微信小程序提供了云开发共享功能,方便在不同的小程序中共用一个付费环境。
笔者更新时间:2023-05-05,文内API随时可能变动,请以链接对应的小程序官方文档为准: 小程序环境共享官方文档

1. 环境的分享配置

在已付费开通云开发的小程序中,点击“环境共享”-“添加共享”-添加希望使用这个云开发环境的小程序appid,完成分享的配置
环境共享
添加共享
填写appid选择小程序

2. 使用共享云开发环境的小程序代码编写

2.1 初始化

使用共享环境的小程序需要在一开始进行共享环境的初始化,此处需要共享了环境的小程序appId共享的云开发环境id

initEnv: async () => {
    // 初始化共享环境
    const cloundObj = new wx.cloud.Cloud({
      // 填写提供云开发共享的小程序AppID
      resourceAppid: appId,
      // 填写提供云开发共享的云开发环境Id
      resourceEnv: envId,
    });
    await cloundObj.init();
  },

cloundObj 可认为是共享环境对象,之后的云函数调用都要用到这个对象,建议存储在全局对象里:

// 将初始化后的对象存起来
Object.assign(app.globalData, {
  cloundObj: cloundObj
})
...
...
// 之后其他页面或组件获取该对象:
const app = getApp();
console.log(app.globalData.cloundObj)

下面的文章中统一以cloundObj 变量表征这个值,至于如何存储、获取则由读者自行实现。

2.2 云函数调用

使用共享环境的小程序本身的云函数是无法设置环境的,所有的云函数都必须设置在共享了云开发环境的主小程序上
共享其他云环境的小程序无法设置当前环境
在共享了环境的小程序上部署好相关的云函数后,即可在对应的小程序上调用那边部署好的云函数:

cloundObj.callFunction({
      name: "", // 调用的云函数名称
      data: {}, // 传递数据
      success: function (res) {},
      fail: function (res) {},
      complete: function (res) {},
})

4. 拓展:共享环境的小程序获取openId

2022年后小程序获取openId的方式有所变化,官方文档: wx.login文档,特别记录一下

4.1 小程序密钥的设置

正式编写程序前先保存好appId和密钥:小程序官网,密钥一旦设置就无法明文查看,所以妥善保存好,当然也是可以重置的 ╭(′▽`)╯
官网获取密钥

4.2 小程序内代码编写

const appId = xxxx; // 小程序appid
const secretId = xxx; // 小程序secretID
...
...
wx.login({
    success: (res) => {
        cloundObj.callFunction({
            name: 'getOpenId',
            data: {
                code: res.code,
                appId,
                secretId,
            },
            success: (result) => {
                const { openid } = result?.result ?? {};
                // openid已经获得
            }
        })
    }
})

4.3 云函数编写

4.2里调用了getOpenId这个云函数,在共享了环境的主小程序里新建对应的云函数:
新建云函数getOpenId
对应的index.js内容如下

// 云函数入口文件
const cloud = require('wx-server-sdk')
var request = require('request')
const env = '';  // 待填写:环境的id
cloud.init({
  env
})

// 云函数入口函数
exports.main = async (event, context) => {
  var url = `https://api.weixin.qq.com/sns/jscode2session?appid=${event.appId}&secret=${event.secretId}&js_code=${event.code}&grant_type=authorization_code` // 用session换取openID
  return new Promise((resolve, reject) => {
    request.get(url, (error, response, body) => {
      if (error) {
        reject()
      } else {
        try {
          const json = JSON.parse(body);
          resolve(json)
        } catch (e) {
          reject()
        }
      }
    })
  })
}

即可在小程序端获得openid
控制台输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】详解二叉树进阶OJ题(更深入理解递归和非递归在二叉树的各种结构的应用)

前言: 我们在此前的初阶数据结构讲解中已经讲解了部分二叉树的OJ题,当时我们只学习了C语言,其实还有很多进阶的OJ题用C来写会比较方便和容易理解,所以本章将在讲解完二叉搜索树后来详解不同类型的二叉树进阶OJ题,校招中…

常用性能测试工具都有哪些特点?

在软件开发过程中,性能测试是不可或缺的一部分。通过性能测试,我们可以评估系统的响应速度、稳定性和容量等方面的表现,帮助我们发现和解决潜在的性能问题。而常用的性能测试工具也在不断发展和升级,成为了帮助我们完成性能测试的…

【ArcGIS Pro二次开发】(25):属性映射

属性映射经常用于属性表或Excel表的赋值,比如按用地用海表对规划用地的用地编码或用地名称赋值,将汇总好的用地指标表赋值给已经制好的Excel模板等。 下面试着在ArcGIS Pro SDK中实现功能上述这两个功能。 一、Excel表格映射到属性表Table 1、要实现的…

VMware虚拟机安装CentOS8详细教程

文章目录 一、下载安装包二、创建虚拟机1.安装 VMware2.创建虚拟机3.编辑虚拟机设置 三、系统安装1.开始安装2.时区设置3.分区设置4.配置网络6.开机密码7.配置安装源8.安装 四、系统配置1.网络检查2.配置静态IP地址 一、下载安装包 CentOS-7-x86_64【Minimal版】 https://mirro…

程序员必知必会!阿里内部热捧“Spring全线笔记”太完整了

前言 对于每一位Java开发人员来说,提起Spring定是不陌生的,实际上自Spring框架诞生以来,就备受开发者的青睐,基本上现在的互联网公司都要使用到Spring框架。Spring框架中又包含了SpringMVC、SpringBoot、SpringCloud等&#xff0…

OpenGL光照教程之 光照贴图

引言 前面的教程,我们讨论了让不同的物体拥有各自不同的材质并对光照做出不同的反应的方法。在一个光照场景中,让每个物体拥有和其他物体不同的外观很棒,但是这仍然不能对一个物体的图像输出提供足够多的灵活性。  前面的教程中我们将一个物…

关于FPGA基础知识 LCMXO2-7000HC-4TG144C MachXO2系列 FPGA可编程逻辑简介

关于FPGA基础知识 LCMXO2-7000HC-4TG144C lattice莱迪斯深力科 MachXO2系列 FPGA可编程逻辑简介 FPGA基础知识:FPGA是英文Field-Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一…

【测评】飞凌i.MX8MM开发板,为你带来卓越的影音体验

来源:飞凌嵌入式官网 OKMX8MM-C是飞凌基于NXP公司i.MX8M Mini 四核64位处理器所设计的一款开发板,主频最高达1.8GHz,可提供多种音频接口,包括I2S、AC97、TDM、PDM和SPDIF。在性能和算力都大幅提高的同时,系统的运行也更…

idea配置Tomcat服务和创建javaweb项目

前言 我的idea版本是Ultimate 2022.3 步骤 1.先创建一个空的java项目 2.点击project structure 然后点击moudle – > dependcies —>点+ 选择JArs or … 找到你安装的tomcat里面的lin依次添加jsp-api.jar、servlet-api.jar 右击项目然后点add Framework s…

SPSS如何进行生存分析之案例实训?

文章目录 0.引言1.寿命表分析2.Kaplan-Meier分析方法3.Cox回归分析 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结,本文对生存分析进行阐…

JVM虚拟机中的类加载机制和双亲委派模型

目录 虚拟机的类加载机制 名词解释 类加载的时机 类加载的过程 1.加载(Loading)阶段 非数组类型的加载阶段与数组类型区别 2.验证(Verification)阶段 1)文件格式验证 2)元数据验证 3)…

深入理解Java虚拟机——对象的创建和内存布局

1.对象的创建 首先声明这一篇博客是在HotSpot虚拟机的前提之下记录的。主要参考书籍来源于周志明老师的《深入理解JVM虚拟机》。 在语言层面,创建对象仅仅是使用一个new关键字。但是从虚拟机的角度来看,创建一个对象一共有5个步骤:类加载检查…

排序大师:探秘C语言中神奇的qsort库函数

本篇文章中会详细讲解C语言中的qsort库函数。我准备分2个方面来讲: qsort如何使用。模拟实现qsort的效果。(注意:只是用冒泡排序的思想实现类似的效果,实际qsort的底层采用的是快速排序的思想。) 如何使用 先来看看q…

反调试与反反调试

参考文本 (190条消息) C 反反调试(NtQueryInformationProcess)_(-: LYSM :-)的博客-CSDN博客 Windows 平台反调试相关的技术方法总结—part 2 - 先知社区 C/C MinHook 库的使用技巧 - lyshark - 博客园 (cnblogs.com) (177条消息) C 反反调试&#x…

C结构简单而不失强大的表格

2023年了,想必已经不会有人对嵌入式开发中“数据结构(Data Structure)”的作用产生疑问了吧?无论你是否心存疑惑,本文都将给你一个完全不同的视角。 每每说起数据结构,很多人脑海里复现的一定是以下的内容&…

unity中用异步的whenAny,实现:当点击铲子任一部件,拾取整个铲子

一、铲子的组成 铲子包含很多部件组成,当拾取铲子的时候,只要点击铲子的任意一个部件就可以。 如图,点击【木柄】、【螺母】、【铁铲】都可以拾取该物体。 (1)打开高亮 (2)等待土铲被点击&…

为什么要通过API接口来获取数据

API接口(应用编程接口 application/programming接口),准许应用程序通过定义的接口标准来访问另一个应用程序或服务的编程方式。简单来说,API就是两个软件或系统之间的通信语言或接口。 在当今的互联网时代,数据无处不…

Geospatial和Redis事务操作

一、Geospatial 1.简介 基于位置信息服务 (Location-Based Service,LBS) 的应用。 Redis3.2 版本后增加了对 GEO 类型的支持。主要来维护元素的经纬度。redis 基于这种类型,提供了经纬度设置、查询、范围查询、距离查询、经纬度hash等一些相关操作。 2.GEO底层结构…

DataEase 数据源插件分享 - 时序数据库 InfluxDB

前言 InfluxDB 是一个时序数据库,使用的是非标准的 SQL 语法,我使用 DataEase 的插件扩展机制开发了此数据源插件,在这里共享出来,想用的朋友可以下载安装使用。 插件包下载地址 https://north-dataease-1251506367.cos.ap-bei…

Centos 7.X WordPress博客网站详细教程 FTP/PHP/mysql/Apache环境构建

此教程适用于服务器系统为centos 7.x,php安装版本为7.4,mysql安装本部为5.7. 一、mysql安装 1.1 安装三个工具 yum install wget yum install vim yum install unzip 1.2 下载并安装msql 在线下载安装包: wget https://dev.mysql.com/g…