直接参考github上的wafer2-client-sdk
<template>
<div class="userinfo">
<button v-if="!hasUserInfo && canIUse" open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="getUserInfo" @getuserinfo="login"> 点击登录 </button>
<block v-else>
<img class="userinfo-avatar" :src="userInfo.avatarUrl" alt="">
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
</block>
</div>
</template>
<script>
import config from '../../config'
import qcloud from 'wafer2-client-sdk'
export default {
data: {
userInfo: {},
hasUserInfo: false,
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
methods: {
getUserInfo (e) {
console.log('crazy getUserInfo', e)
this.userInfo = e.detail.userInfo
this.hasUserInfo = true
},
getWxLoginNew: function () {
console.log('crazy getWxLoginNew')
const session = qcloud.Session.get()
qcloud.setLoginUrl(config.loginUrl)
if (session) {
// 第二次登录
// 或者本地已经有登录态
// 可使用本函数更新登录态
console.log('crazy 第二次登录')
qcloud.loginWithCode({
success: res => {
this.userInfo = res
this.hasUserInfo = true
console.log('crazy 登录成功', res)
},
fail: err => {
console.log('crazy 登录失败')
console.error(err)
}
})
} else {
// 首次登录
console.log('crazy 首次登录')
qcloud.login({
success: res => {
this.userInfo = res
this.hasUserInfo = true
console.log('crazy 登录成功', res)
},
fail: err => {
console.log('crazy 登录失败')
console.error(err)
}
})
}
},
login (e) {
console.log('crazy login')
this.getWxLoginNew()
}
}
}
</script>
<style>
/**index.wxss**/
.userinfo {
display: flex;
flex-direction: column;
align-items: center;
}
.userinfo-avatar {
width: 128rpx;
height: 128rpx;
margin: 20rpx;
border-radius: 50%;
}
.userinfo-nickname {
color: #aaa;
}
.usermotto {
margin-top: 200px;
}
</style>