话不多说,直接讲怎么做
分三步:
第一步就是getUserInfo,获取我们的头像和昵称
第二步就是获取code,
第三步就是通过后台的接口,获取我们的openid等
我习惯将登陆这部分封装起来,定义一个类
// post请求
import {publicing} from '../api/api.js'
// 请求地址
import {wxloginurl} from '../api/request.js'
var {log} = console
class logins{
// 构造方法执行:必须是类已经实例化
constructor(wxuser) {
this.wxuser = wxuser
log(wxuser)
}
// 先获取发起请求的必须条件
async listing(){
// 拿到用户头像,昵称,code
let userdata = await this.wxlogin()
log(userdata)
// 请求接口:登录
let usermen = await this.gologin(userdata)
return usermen
}
// 拿到用户头像,昵称,code
wxlogin(){
let wxuser = this.wxuser
return new Promise((resolve,reject)=>{
if(wxuser != undefined){
wx.login({
success: (res) => {
log(res)
let data = {
nickName:wxuser.nickName,
avatarUrl:wxuser.avatarUrl,
code:res.code
}
resolve(data)
},
fail:(err)=>{
log(err)
reject('获取code失败')
}
})
}else{
console.log('拒绝登录')
reject('FAIL')
}
})
}
// 请求接口:登录
gologin(userdata){
return new Promise((resolve,reject)=>{
publicing(wxloginurl,userdata)
.then((res)=>{
log(res)
if(res.data.msg == 'success'){
// 存入本地
resolve('SUCCESS')
uni.setStorageSync('usermen',res.data.datas)
}
})
.catch((err)=>{
log(err)
})
})
}
// 获取用户信息和code
}
// 模块
module.exports = logins
publicing是我封装的一个专门post请求,wxloginurl是封装的请求
然后如何使用呢???
<button plain="true" open-type="getUserInfo" @getuserinfo="getUserInfo">去登录</button>
let logins = require('../../login/login.js')
var {log} = console
data(){
return{
wxlogin: true,
usering:{}
}
},
// 获取头像昵称
getUserInfo(event){
log(event)
let wxing = event.detail.userInfo
// 实例化类
const logclass = new logins(wxing)
// 实例化类之后。可以访问类中的方法和属性
logclass.listing()
then((res)=>{
log(res)
this.ifUser()
})
.catch((err)=>{
log(err)
})
},
// 是否已登录
ifUser(){
let setdata = uni.getStorageSync('usermen')
if(!setdata){
this.wxlogin = false
}else{
this.wxlogin = true
this.usering = setdata
}
}
},
onShow() {
log('每次都执行')
this.ifUser()
}
wxlogin是为了判断它登录和不登录展示的内容不同