首先要清楚小程序的几种授权,且oppenid是可以静默拿到,不需要授权
所以,在获取oppenid这一块,可以写在app.js的onLaunch中,并且在封装好的post和get请求中,直接全局加入oppenid参数,并且在请求前如果没有oppenid,直接先进行获取,确保每一次请求都携带着oppenid
import { login } from "./libs/api"; //接口文件, login为后端获取oppenid接口,准确一点名称为 getLoginMessage
APP(
{
//小程序全局变量固定写法
globalData: {
userInfo: null,
}
onLaunch : function(){
//wx.login为微信调起登录的接口
this.getLoginMessage()
},
//这里的login为后端开发接口,参数为调用微信返回的code, 并传给后台换取openId, sessionKey, unionId
getLoginMessage(){
wx.login({
success: res = {
const {code} = res
let query = {
jsCode:code
}
login(query).then(res=>{
//可以根据后端返回code值,进行处理
})
}
})
},
getSetting(){
wx.getSetting({
success:res => {
if (res.authSetting['scope.userInfo']) {
//用户已经授权, 可以调用微信获取用户信息接口
wx.getUserInfo(
success: res => {
//可以将用户信息存至全局
const { userInfo } = res
this.globalData.userInfo = userInfo
}
)
}
},
fail:err =>{
console.log('fail'.err)
}
})
}
}
)
//api中的请求封装
function post(params,url){
}