App.vue
export default {
onLaunch: function() {
login()
},
}
login.js
export const login = function() {
// 1.获取登录code
uni.login({
provider: 'weixin',
success: function(loginRes) {
let code = loginRes.code;
let isCanUse = uni.getStorageSync('isCanUse') // 记录是否第一次获取用户数据
let data = {code}
// 获取openId并存储,我之后的所有接口请求都会带上这个参数
// request是我自己封装的请求,参数:接口地址、请求数据
request(urls.getOpenId, data).then(res => {
let { openid } = res.result
store.commit('SET_OPEN_ID', openid);
// 如果不是第一次获取,不需要权限,直接去拿数据
if (isCanUse !== "" && !isCanUse) {
uni.getUserInfo({
provider: 'weixin',
success: function(infoRes) {
// 请求接口更新用户信息,我这里的需求是每次登录都会更新用户信息
updateUserInfo(infoRes.userInfo)
}
})
}else{
// 如果是第一次,需要去登录页面获取授权
uni.navigateTo({
url:'/pages/login/login'
})
}
})
},
});
}
// 向后台更新信息
const updateUserInfo = function(data) {
}
登录页面的代码 /pages/login/login.vue
<template>
<view>
<!-- #ifdef MP-WEIXIN -->
<view>
<button class='botton' type='primary' open-type="getUserInfo" withCredentials="true" lang="zh_CN" @getuserinfo="wxGetUserInfo">
授权登录
</button>
</view>
<!-- #endif -->
</view>
</template>
<script>
export default {
name: "login",
data() {
return {
};
},
methods: {
// 第一授权获取用户信息
wxGetUserInfo() {
let _this = this;
uni.getUserInfo({
provider: 'weixin',
success: function(infoRes) {
uni.setStorageSync('isCanUse', false);// 记录是否第一次授权
// 这里请求存储用户数据
},
fail(res) {}
});
},
},
}
</script>