小程序2022年進(jìn)行了云開發(fā)付費(fèi)調(diào)整,以前一個(gè)小程序?qū)?yīng)一個(gè)云開發(fā)環(huán)境的奢侈用法不再適合普通開發(fā)者,微信小程序提供了云開發(fā)共享功能,方便在不同的小程序中共用一個(gè)付費(fèi)環(huán)境。
筆者更新時(shí)間:2023-05-05,文內(nèi)API隨時(shí)可能變動(dòng),請(qǐng)以鏈接對(duì)應(yīng)的小程序官方文檔為準(zhǔn): 小程序環(huán)境共享官方文檔
1. 環(huán)境的分享配置
在已付費(fèi)開通云開發(fā)的小程序中,點(diǎn)擊“環(huán)境共享”-“添加共享”-添加希望使用這個(gè)云開發(fā)環(huán)境的小程序appid,完成分享的配置
2. 使用共享云開發(fā)環(huán)境的小程序代碼編寫
2.1 初始化
使用共享環(huán)境的小程序需要在一開始進(jìn)行共享環(huán)境的初始化,此處需要共享了環(huán)境的小程序appId和共享的云開發(fā)環(huán)境id
initEnv: async () => {
// 初始化共享環(huán)境
const cloundObj = new wx.cloud.Cloud({
// 填寫提供云開發(fā)共享的小程序AppID
resourceAppid: appId,
// 填寫提供云開發(fā)共享的云開發(fā)環(huán)境Id
resourceEnv: envId,
});
await cloundObj.init();
},
cloundObj 可認(rèn)為是共享環(huán)境對(duì)象,之后的云函數(shù)調(diào)用都要用到這個(gè)對(duì)象,建議存儲(chǔ)在全局對(duì)象里:
// 將初始化后的對(duì)象存起來
Object.assign(app.globalData, {
cloundObj: cloundObj
})
...
...
// 之后其他頁面或組件獲取該對(duì)象:
const app = getApp();
console.log(app.globalData.cloundObj)
下面的文章中統(tǒng)一以cloundObj 變量表征這個(gè)值,至于如何存儲(chǔ)、獲取則由讀者自行實(shí)現(xiàn)。
2.2 云函數(shù)調(diào)用
使用共享環(huán)境的小程序本身的云函數(shù)是無法設(shè)置環(huán)境的,所有的云函數(shù)都必須設(shè)置在共享了云開發(fā)環(huán)境的主小程序上
在共享了環(huán)境的小程序上部署好相關(guān)的云函數(shù)后,即可在對(duì)應(yīng)的小程序上調(diào)用那邊部署好的云函數(shù):
cloundObj.callFunction({
name: "", // 調(diào)用的云函數(shù)名稱
data: {}, // 傳遞數(shù)據(jù)
success: function (res) {},
fail: function (res) {},
complete: function (res) {},
})
4. 拓展:共享環(huán)境的小程序獲取openId
2022年后小程序獲取openId的方式有所變化,官方文檔: wx.login文檔,特別記錄一下
4.1 小程序密鑰的設(shè)置
正式編寫程序前先保存好appId和密鑰:小程序官網(wǎng),密鑰一旦設(shè)置就無法明文查看,所以妥善保存好,當(dāng)然也是可以重置的 ╭(′▽`)╯
4.2 小程序內(nèi)代碼編寫
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已經(jīng)獲得
}
})
}
})
4.3 云函數(shù)編寫
4.2里調(diào)用了getOpenId這個(gè)云函數(shù),在共享了環(huán)境的主小程序里新建對(duì)應(yīng)的云函數(shù):
對(duì)應(yīng)的index.js內(nèi)容如下文章來源:http://www.zghlxwxcb.cn/news/detail-492227.html
// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
var request = require('request')
const env = ''; // 待填寫:環(huán)境的id
cloud.init({
env
})
// 云函數(shù)入口函數(shù)
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.zghlxwxcb.cn/news/detail-492227.html
到了這里,關(guān)于微信小程序共享云開發(fā)環(huán)境的代碼配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!