在微信小程序中,往往需要将用户信息录入自己的数据库中,就得有一个唯一标记区分用户,这个标记就是openid。
我这里用云函数的方式,比较简单
先创建一个名为getOPenid的云函数
在云函数中获取微信调用上下文cloud.getWXContext
可选择性的返回openid、appid、unionid等,可详细查看官方接口文档
index.js代码中修改
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
let{ APPID,OPENID}=cloud.getWXContext()
return {
APPID,
OPENID
}
}
接着在页面.js中调用就行
页面中.js代码
/**
* 页面的初始数据
*/
data: {
openid : "",
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
wx.cloud.callFunction({
name:'getOpenid',
}).then(res=>{
//res就将openid返回了
this.setData({
openid : res.result.openid
})
//可以把openid放入缓存
wx.setStorageSync('openid',res.result.openid)
})
},
另外我们可以通过wx.getUserProfile接口让用户授权获得用户头像和名字
//获取用户信息
getUserProfile(){
wx.getUserProfile({
desc: '用于提供个人服务', //声明获取用途,会展示在弹框中
success: (res) => {
let user = res.userInfo
wx.setStorageSync('user',user) //保存用户信息到本地缓存
this.setData({
isShowUserName : true,
userInfo : user
})
wx.showToast({
title: '登录成功',
})
},
fail: (res) => {
console.log("获取用户信息失败",res)
},
})
},
页面显示时先看看缓存中有没有
/**
* 生命周期函数--监听页面显示
*/
onShow(options) {
this.getUserProfile()
var user = wx.getStorageSync('user'); //从本地缓存取用户信息
if (user && user.nickName){ //如果用就显示本地缓存
this.setData({
isShowUserName : true,
userInfo : user
})
}
},