微信小程序可以靜默獲取用戶的openid, 使用接口為 getWXContext, 點(diǎn)開API可以看到相應(yīng)代碼
const cloud = require('wx-server-sdk')
exports.main = async (event, context) => {
const {
OPENID,
APPID,
UNIONID,
ENV,
} = cloud.getWXContext()
return {
OPENID,
APPID,
UNIONID,
ENV,
}
}
可以將上邊云函數(shù)命名為 login, 然后同步到云服務(wù)器上, 上傳完成后在云開發(fā)界面如下:

image.png
本地調(diào)試 : 這個需要在本地
login 目錄運(yùn)行下 npm install云端調(diào)試: 配置好參數(shù)直接運(yùn)行即可,需要注意的是,如果有梯子最好將梯子關(guān)掉,不然可能會浪費(fèi)些查問題的時間。
云函數(shù)的使用
以上面 login 函數(shù)為示例:
app.js
//如果擔(dān)心openid的安全,就用這個函數(shù)
getCloudOpenid: async function () {
return this.openid = this.openid || (await wx.cloud.callFunction({name: 'login'})).result.OPENID
},
//最佳方案。
getOpenid: async function () {
(this.openid = this.openid || wx.getStorageSync('openid')) || wx.setStorageSync('openid', await this.getCloudOpenid())
return this.openid
},
任何page:
onLoad: async function () {
console.log(this.openid = await getApp().getOpenid())
},
//在本page的其他函數(shù)里獲得openid。
yourFunc: function(){
console.log(this.openid)
}
以上應(yīng)用代碼摘于云函數(shù)獲取openid 。 需要注意的是云函數(shù)返回的 字段名 與 APP用的字段名 大小寫 需保持一致。