你检查一下app.globalData里面写了openid没
检查logincheck.js中获取openID的地方
这个有什么问题么
信息上提示是63行
把完整代码贴一下
const app = getApp();
const regeneratorRuntime = require('../utils/runtime.js')
const WXBizDataCrypt = require('../utils/RdWXBizDataCrypt.js');
// 获取数据库引用
const db = wx.cloud.database();
const userListDB = db.collection('userlist');
Page({
data: {
isRegister: 0,
isNoRegister: 0,
isNoUserInfoCheck: 0,
},
toQandA() {
wx.navigateTo({
url: '../qAndA/qAndA',
})
},
//返回此页面时使用
onShow() {
let flag = app.globalData.orgPage.type;
if (flag == 3) {
wx.redirectTo({
url: '../navbar/navbar',
})
}
},
async onLoad(query) {
//获取机构名称和配置信息
await wx.cloud.callFunction({
name: "getAllUnion"
}).then(res => {
console.log(res.result.data);
app.globalData.isNoUserInfoCheck = res.result.isNoUserInfoCheck;
app.globalData.isBleOnly = res.result.isBleOnly;
app.globalData.isNoRegister = res.result.isNoRegister;
app.globalData.keyName = res.result.keyName;
app.globalData.allUnion = res.result.data;
app.globalData.registerType = res.result.registerType;
app.globalData.listRule = res.result.listRule;
app.globalData.showNotice = res.result.showNotice;
app.globalData.isShowNotice = res.result.isShowNotice;
app.globalData.isShowNoticeIndex = res.result.isShowNoticeIndex;
app.globalData.showNoticeIndex = res.result.showNoticeIndex;
console.log(app.globalData.allUnion);
console.log("输出全部配置信息")
console.log(app.globalData)
})
let globalData = app.globalData;
console.log(globalData)
for (var Key in globalData) {
console.log(Key + ':' + globalData[Key]);
}
this.setData({
globalData: globalData
})
console.warn(typeof this.data.globalData)
let isNoUserInfoCheck = this.data.globalData.isNoUserInfoCheck;
let isNoRegister = this.data.globalData.isNoRegister; //指定无需注册的体验模式
console.log(isNoRegister)
this.setData({
isNoUserInfoCheck: isNoUserInfoCheck,
isNoRegister: isNoRegister,
})
//指定用户自动登录
if (this.data.isNoUserInfoCheck) {
app.globalData.openid = 'og4vT5JjRgKaq_Zr7043RmJrHT4w';
this.checkRegister();
}
this.getUser(); //注册第一步获取openid
//检测参数
let scene = decodeURIComponent(query.scene)
console.log('二维码信息为');
console.log(scene);
//测试用
//scene ='26b301645d39b4a2028db6467c4bf187';
if (scene.length != 32) {
console.log('没有带参数');
} else {
//跳转查看物品
console.log(scene);
app.globalData.orgPage = {
type: 1, //物品页
_id: scene
}
}
},
autoRister() {
let groupNames = ['格兰芬多', '赫奇帕奇', '拉文克劳', '斯莱特林'];
let key = parseInt(4 * Math.random());
userListDB.add({
data: {
config: {
isNew: 1,
isOCR: 0,
},
qqNumber: '123456',
date: '可选',
unionName: '体验组织', //增加的组织名称字段!!!!!!!!!
groupName: groupNames[key],
mail: 'test@qq.com',
major: '其他',
name: '体验账号',
phonecall: '123456',
province: '可选',
stuYear: '可选',
stuid: '777777777',
type: '管理员',
userInfo: app.globalData.userInfo,
creatTime: db.serverDate(),
isCheck: ''
},
}).then(res => {
wx.hideLoading();
wx.redirectTo({
url: '../logincheck/logincheck',
})
}).catch(err => {
wx.showModal({
title: '注册失败',
content: String(err),
})
})
},
checkRegister() { //检查用户是否已经注册
let _this = this;
console.log(app.globalData.openid)
userListDB.where({
_openid: app.globalData.openid // 填入当前用户 openid
}).get({
async success(res) {
console.log(res.data)
//初始注入用户数据!!!!!!!!
app.globalData.USER = res.data[0];
if (res.data.length == 0) { //查询数据库中是否有用户数据
if (app.globalData.isNoRegister && !(app.globalData.isWxwork)) {
wx.showLoading({
title: '获取体验权限中',
})
_this.autoRister();
} else {
//对于企业微信将直接获取信息不需要注册
if (app.globalData.isWxwork) {
//企业微信注册逻辑
_this.wxworkRegister()
} else {
wx.redirectTo({
url: '../registerOcr/registerOcr',
})
}
}
} else {
//如果是企业微信则需要校验是否有userid字段
//多身份切换考虑用户拥有多个身份
if (app.globalData.isWxwork) {
//console.warn('测试模式')
// console.log(typeof (res.data[0].userid))
//获取授权token
console.log('开始获取userid')
let ID = 'wwd6b6f0333869ca28'; //企业id
let SECRECT = '69usvQVy2RZ9HBQj-wxKxbbZH3vAKJrCeitCsMWmMCQ' //应用key
let wxworkUserSerct = await app.getWxworkSerct(ID, SECRECT)
let userid = wxworkUserSerct.userid;
let corpid = wxworkUserSerct.corpid; //当前企业的corpid
//console.log(wxworkUserSerct)
let allUnion = app.globalData.allUnion;
let currentUnionName;
let userUnionName = app.globalData.USER.unionName;
console.log(userUnionName)
console.log(allUnion)
let currentGroupName;
for (let index in allUnion) { //将当前企业id换成名称
if (allUnion[index].corpid == corpid) {
console.log('当前企业名称为')
currentUnionName = allUnion[index].unionName
currentGroupName = allUnion[index].groupName[0]
console.log(allUnion[index].unionName)
break;
}
}
//比较企业名称 不一样则需要 将用户的机构名称更改
//并更新userid的值,同时需要将小组名称改为未选择
//权限不变
if (currentUnionName != userUnionName) { //将用户的机构名称改为当前企业的名称
wx.showLoading({
title: '切换机构中',
icon: 'none'
})
await wx.cloud.callFunction({
name: 'editUnionName',
data: {
unionName: currentUnionName,
userid: userid,
groupName: currentGroupName
}
}).then(res => { //转换后重新登录
wx.hideLoading();
wx.redirectTo({
url: '../logincheck/logincheck',
})
})
}
if (typeof (res.data[0].userid) == "undefined" || res.data[0].userid == '') { //需要获取userid
wx.cloud.callFunction({
name: 'editUserID',
data: {
userid: userid,
_openid: res.data[0]._openid
}
}).then(res => {
console.log(res)
})
}
}
//“物品码 跳转逻辑”
let flag = app.globalData.orgPage.type;
if (flag == 0) {
wx.redirectTo({
url: '../navbar/navbar',
})
} else if (flag == 1) { //到物品详情页
let data = app.globalData.orgPage._id;
//返回自动恢复初始化
app.globalData.orgPage.type = 3;
wx.navigateTo({
url: '../itemDetail/itemDetail?data=' + data
})
}
}
},
fail: function (err) {
wx.showModal({
title: '错误',
content: err,
})
}
})
},
getUserInfo: function () {
// 查看是否授权
let _this = this;
wx.getUserInfo({
success: function (res) {
app.globalData.userInfo = res.userInfo
console.log(app.globalData.userInfo)
_this.checkRegister()
_this.setData({
isRegister: 0
})
},
fail: function (err) {
_this.setData({
isRegister: 1
})
}
})
},
async wxworkRegister() { //企业微信注册逻辑
//获取信息
//获取机构信息,电话,等。
//获取授权token
let ID = 'wwd6b6f0333869ca28'; //企业id
let SECRECT = '69usvQVy2RZ9HBQj-wxKxbbZH3vAKJrCeitCsMWmMCQ' //应用key
let wxworkUserSerct = await app.getWxworkSerct(ID, SECRECT)
console.log('多重promise调试')
console.log(wxworkUserSerct)
app.globalData.corpid = wxworkUserSerct.corpid
console.log('调用企业微信api获取用户信息')
let userInfo = await new Promise((resolve, reject) => {
wx.qy.getEnterpriseUserInfo({
success: function (res) {
var userInfo = res.userInfo
var name = userInfo.name
var gender = userInfo.gender //性别 0:未知、1:男、2:女
//console.log(userInfo)
resolve(userInfo)
}
})
})
let Phone = await new Promise((resolve, reject) => {
wx.qy.getMobile({
success: function (res) {
console.log(res.encryptedData)
console.log(res.iv)
let appId = 'wx6b72c910779512f9'
var pc = new WXBizDataCrypt(appId, wxworkUserSerct.session_key);
var data = pc.decryptData(res.encryptedData, res.iv);
console.log('解密后 电话号码: ', data)
resolve(data)
}
})
})
let Email = await new Promise((resolve, reject) => {
wx.qy.getEmail({
success(res) {
console.log(res.encryptedData)
console.log(res.iv)
let appId = 'wx6b72c910779512f9'
var pc = new WXBizDataCrypt(appId, wxworkUserSerct.session_key);
var data = pc.decryptData(res.encryptedData, res.iv);
console.log('解密后邮箱: ', data)
resolve(data)
}
})
})
console.log('同步获取wxwork个人信息接口')
console.log(userInfo)
console.log(Phone)
console.log(Email)
let corpid = app.globalData.corpid //公司id
let allUnion = app.globalData.allUnion //获取所有组织
let userid = wxworkUserSerct.userid
let flag = 0
let union = ''
console.log(corpid)
for (let i = 0; i < allUnion.length; i++) {
if (allUnion[i].corpid == corpid) {
if (allUnion[i].corpid != '') {
flag = 1;
union = allUnion[i];
break;
}
}
}
if (!flag) { //小程序未绑定企业信息
wwx.showModal({
title: '提示',
content: '管理员未绑定机构信息',
})
return
}
console.log(union)
//选择分组信息
/*
wx.showActionSheet({
itemList: ['A', 'B', 'C'],
success(res) {
console.log(res.tapIndex)
},
fail(res) {
console.log(res.errMsg)
}
})
*/
//企业微信体验模式相关逻辑
let type = '普通成员'
let groupName = '未选择'
let groupNames = ['格兰芬多', '赫奇帕奇', '拉文克劳', '斯莱特林'];
let key = parseInt(4 * Math.random());
if (union.unionName == '体验组织') {
type = '管理员'
groupName = groupNames[key]
}
//信息注入数据库
userListDB.add({
data: {
config: {
isNew: 0,
isOCR: 0,
},
userid: userid, //企业微信特有字段
qqNumber: '123456',
date: '可选',
unionName: union.unionName, //增加的组织名称字段!!!!!!!!!
groupName: groupName,
mail: Email.email,
major: '可选',
name: userInfo.name,
phonecall: Phone.mobile,
province: '可选',
stuYear: '可选',
stuid: '可选',
type: type,
userInfo: app.globalData.userInfo,
creatTime: db.serverDate(),
isCheck: ''
},
}).then(res => {
//发送通知通知管理员
console.log('注册成功');
wx.redirectTo({
url: '../logincheck/logincheck',
})
}).catch(err => {
wx.showModal({
title: '注册失败',
content: String(err),
})
})
},
getUser() {
// 调用云函数
let _this = this;
wx.cloud.callFunction({
name: 'login',
data: {},
success: res => {
console.log('[云函数] [login] user openid: ', res.result.openid)
app.globalData.openid = res.result.openid
console.log(app.globalData.openid)
_this.getUserInfo();
},
fail: err => {
console.error('[云函数] [login] 调用失败', err)
}
})
}
})