// 微信存储:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/storage.html // 微信登录 // 微信小程序登录流程:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html // 登录失败的原因可能是因为没将后台IP添加到白名单 import { mapGetters } from 'vuex' import { setUserOpenid } from '@/common/request/api/login.js' import { toast } from '@/common/utils/common' export const wxLoginMixins = { computed: { ...mapGetters([ 'isUserOpenid', ]) }, data () { return { } }, methods: { onGetPhoneNumber(e) { return new Promise((resolve, reject) => { // 获取手机号官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html if (e.detail.errMsg === "getPhoneNumber:fail user deny") { // 用户拒绝授权 toast("已取消授权") reject("已取消授权") } else if (e.detail.errMsg === "getPhoneNumber:fail no permission") { // 微信公众平台未认证或未使用企业认证 toast("微信公众平台未认证或未使用企业认证") reject("微信公众平台未认证或未使用企业认证") } else if (e.detail.errMsg === "getPhoneNumber:ok") { // code换取用户手机号。 每个code只能使用一次,code的有效期为5min this.$store.dispatch('auth/wxLogin', e.detail.code).then(res => { this.setOpenid(); this.$store.dispatch('auth/GetInfo').then(result => { resolve(result) }) }) } else { toast("授权失败") reject("授权失败") } }) }, setOpenid() { let self = this; // uniapp 官方文档:https://uniapp.dcloud.io/api/plugins/login.html#login if (self.isUserOpenid) { return; }; uni.login({ provider: 'weixin', success: function (loginRes) { if (loginRes.code) { setUserOpenid(loginRes.code).then(res => { // console.log("更新openid成功", res) self.$store.commit("auth/SET_IS_USER_OPENID", true); }) } else { console.log('登录失败!获取code失败!' + res.errMsg) } } }); } } }