<template>
<view class="login-container">
<uni-icons type="contact-filled" size="100" color="#AFAFAF">uni-icons>
<button type="primary" class="btn-login" open-type="getUserInfo" @getuserinfo="getUserInfo">一键登录button>
<view class="tips-text">登录后尽享更多权益view>
view>
template>
<script>
import {
mapMutations
} from 'vuex'
export default {
name: "my-login",
data() {
return {
};
},
methods: {
...mapMutations('m_user', ['updateUserInfo', 'updateToken']),
getUserInfo(e) {
console.log("用户授权后的用户信息", e.detail);
// 判断是否获取用户信息成功
if (e.detail.errMsg === 'getUserInfo:fail auth deny') return uni.$showMsg('您取消了登录授权!')
console.log('用户的基本信息', e.detail.userInfo)
this.updateUserInfo(e.detail.userInfo)
this.getToken(e.detail)
},
async getToken(info) {
const [err, res] = await uni.login().catch(err => err)
console.log('调用登录接口返回的信息', res, err);
if (res.errMsg !== "login:ok" || err) {
return uni.$showError('登录失败')
}
const query = {
code: res.code,
encryptedData: info.encryptedData,
iv: info.iv,
rawData: info.rawData,
signature: info.signature
}
// 换取 token
const {
data: loginResult
} = await uni.$http.post('/api/public/v1/users/wxlogin', query)
console.log('data', loginResult);
if (loginResult.meta.status == 200) {
uni.$showMsg('登录失败')
} else {
uni.$showMsg('登录成功')
// 更新 vuex 中的 token
this.updateToken('tokentokentokentoken')
}
}
}
}
script>
兼容不了,官方文档写了不支持H5