微信小程序基本问题
1.扫网页端码登录
- 打开二维码,二维码中包含一个可唯一识别的字符串,成为uuid
- 当一个可以与微信服务器交互的客户端扫描该二维码,客户端获得该二维码的uuid,并与自身的账号进行绑定
- 浏览器端获得了客户端已经登录的账号信息,并且进行显示,等待客户端点击确认登录
- 客户端点击确认登录,将uuid+账号信息发送到服务器,微信服务器收到之后根据uuid找到该浏览器的请求页面,并且给出token,然后登录成功。
2.canvas
保留
3.云函数
保留
4.登录
前端代码
wx.login({
success: res => {
let data = {
code:res.code,
username:this.data.userInfo.nickName,
state:that.data.shenfen
};
wx.request({
url: 'http://www.sevenhero.cn:1234/login',
method:'POST',
data:JSON.stringify(data),
success(res){
if(res.data){
wx.setStorage({
key:"openid",
data:res.data //这里获取到了openid
})
wx.switchTab({
url: '../sale/sale',
})
}
}
})
}
})
后端代码
async post (c) {
//发起请求调用小程序服务器api
let status = JSON.parse(c.body).state,
username = JSON.parse(c.body).username;
let login_url = `https://api.weixin.qq.com/sns/jscode2session`
+ `?appid=${wxkey.appid}`
+ `&secret=${wxkey.secret}`
+ `&js_code=${JSON.parse(c.body).code}`
+ `&grant_type=authorization_code`
let r;
await fetch(login_url)
.then(res=>res.json())
.then(res=>{
r = res
})
//如果获取openid失败则返回500错误码
if(r.openid === undefined){
c.statues = 500
return
}
//检测数据库中是否有此用户
let myuser = await c.service.model.db_login.findUser(r.openid,status)
//if this user not exists
if(myuser == false)
{
console.log('没有这个用户,加入此新用户~')
await c.service.model.db_login.addUser(r.openid,status,username);
}
//返回openid
c.res.body = r.openid;
}