一直报错
设计一个登录代码,用的是"openapi.phonenumber.getPhoneNumber但是一直报错
- errCode: 40029
- errMsg: "openapi.phonenumber.getPhoneNumber:fail invalid code hint: [rJfaxzI2e-sp68Oa] rid: 659fe0ac-422701b8-010bb3f1"
以下是前端代码
<button open-type="getPhoneNumber" bindgetphonenumber="onGetPhoneNumber">登录/注册</button>
以下是js代码
onGetPhoneNumber: function(e) {
if (e.detail.errMsg === 'getPhoneNumber:ok') {
// 调用wx.login获取code
wx.login({
success: res => {
if (res.code) {
// 调用云函数进行登录或注册
wx.cloud.callFunction({
name: 'getPhoneNumber',
data: {
code: res.code
},
success: result => {
console.log('登录或注册成功:', result);
},
fail: error => {
console.error('登录或注册失败:', error);
}
});
} else {
console.log('登录失败:' + res.errMsg);
}
}
});
} else {
console.log('用户拒绝授权获取手机号');
}
},
以下是云函数的代码(因为我要把手机号码存到数据库中):
const cloud = require('wx-server-sdk');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
});
exports.main = async (event, context) => {
const { code } = event;
const wxContext = cloud.getWXContext();
// 使用code调用getPhoneNumber接口
try {
const result = await cloud.openapi.phonenumber.getPhoneNumber({
code: code
});
if (result.errCode === 0) {
const phoneNumber = result.phone_info.phoneNumber;
const db = cloud.database();
const userCollection = db.collection('user');
console.log("phoneNumber:"+phoneNumber);
// 检查用户是否已注册
const userResult = await userCollection.where({
phoneNumber: phoneNumber
}).get();
if (userResult.data.length === 0) {
// 用户未注册,执行注册流程
await userCollection.add({
data: {
phoneNumber: phoneNumber,
createTime: new Date()
}
});
return { result: '注册成功', phoneNumber: phoneNumber };
} else {
// 用户已注册,返回登录成功
return { result: '登录成功', phoneNumber: phoneNumber };
}
} else {
return { error: result.errMsg };
}
} catch (err) {
return { error: err };
}
};