feat: 优化获取手机号登录的逻辑

This commit is contained in:
Gaoxs
2023-04-26 14:55:21 +08:00
parent df492cbc63
commit 7b896ceee4
3 changed files with 212 additions and 99 deletions

View File

@ -1,19 +1,32 @@
<template>
<view class="container">
<!-- #ifdef MP-WEIXIN -->
<view v-if="!token" class="force-login-wrap">
<view
v-if="!token"
class="force-login-wrap"
>
<!-- <image class="logo-bg" :src="`${$VUE_APP_RESOURCES_URL}/images/logo_bg.png`" mode="aspectFill"></image> -->
<view class="force-login__content y-f">
<open-data class="user-avatar" type="userAvatarUrl"></open-data>
<open-data class="user-name" type="userNickName"></open-data>
<open-data
class="user-avatar"
type="userAvatarUrl"
></open-data>
<open-data
class="user-name"
type="userNickName"
></open-data>
<view class="login-notice">为了提供更优质的服务请先登录</view>
<button
class="cu-btn author-btn"
open-type="getPhoneNumber"
@getphonenumber="phoneLogin">微信手机号一键登录</button>
<!-- <button class="cu-btn author-btn" v-if="canIUseGetUserProfile" @tap="getUserInfoProfile">授权并查看</button>
<button
class="cu-btn author-btn"
open-type="getPhoneNumber"
@getphonenumber="phoneLogin"
>微信手机号一键登录</button>
<!-- <button class="cu-btn author-btn" v-if="canIUseGetUserProfile" @tap="getUserInfoProfile">授权并查看</button>
<button class="cu-btn author-btn" v-else @getuserinfo="getUserInfoBtn" open-type="getUserInfo">授权并查看</button> -->
<button class="cu-btn close-btn" @tap="back">暂不登录</button>
<button
class="cu-btn close-btn"
@tap="back"
>暂不登录</button>
</view>
</view>
<!-- #endif -->
@ -22,7 +35,10 @@
<!-- <image class="logo-bg" :src="`${$VUE_APP_RESOURCES_URL}/images/logo_bg.png`" mode="aspectFill"></image> -->
<view class="force-login__content y-f">
<view class="login-notice">为了提供更优质的服务请先登录</view>
<button class="cu-btn author-btn" @tap="toLogin">去登录</button>
<button
class="cu-btn author-btn"
@tap="toLogin"
>去登录</button>
</view>
</view>
<!-- #endif -->
@ -44,7 +60,8 @@ export default {
data() {
return {
authorize: false,
canIUseGetUserProfile: false
canIUseGetUserProfile: false,
code: ''
}
},
computed: {
@ -54,8 +71,13 @@ export default {
if (wx.getUserProfile) {
this.canIUseGetUserProfile = true
}
this.getLoginCode()
// // 先校验用户是否授权,如果没有授权,显示授权按钮
},
mounted() {
this.getLoginCode()
},
onHide() {
this.updateAuthorizationPage(false)
this.changeAuthorization(false)
@ -111,14 +133,14 @@ export default {
})
})
},
// 申请获取用户信息
// 申请获取用户信息
getUserInfoProfile(data) {
console.log('getUserInfoProfile')
wx.getUserProfile({
lang: 'zh_CN',
desc: '需要获取您的信息用来展示',
success: res => {
console.log('用户信息',res)
console.log('用户信息', res)
uni.showLoading({
title: '登录中',
})
@ -140,64 +162,63 @@ export default {
},
})
},
// 微信用户手机号登录
phoneLogin(e) {
console.log('用户微信手机号登录')
if (e.mp.detail.errMsg == 'getPhoneNumber:ok') {
console.log(e.mp.detail)
getProvider()
.then(provider => {
console.log('当前的环境商',provider)
if (!provider) {
reject()
}
// uni登录
uni.login({
provider: provider,
success: async loginRes => {
console.log(loginRes)
let code = loginRes.code // 获取开发code
cookie.set('wxLoginCode', loginRes.code)
wxappAuth({
encryptedData: e.mp.detail.encryptedData,
iv: e.mp.detail.iv,
code: code,
spread: cookie.get('spread'),
})
.then( res => {
console.log('登录成功,开始处理登录信息保存,并获取用户详情')
uni.hideLoading()
store.commit('login', res.data.token, dayjs(res.data.expires_time))
store.dispatch('userInfo', true)
getUserInfo()
.then(user => {
console.log('获取用户信息成功')
uni.setStorageSync('uid', user.data.uid)
store.dispatch('setUserInfo', user.data)
this.$yrouter.reLaunch({
path: cookie.get('redirect').replace(/\ /g, ''),
})
})
.catch(error => {
console.log('获取用户信息失败')
})
})
.catch(error => {
console.log(error)
console.log('登录接口调用失败')
})
}
})
})
.catch(err => {})
} else {
uni.showToast({
title: '已拒绝授权',
icon: 'none',
duration: 2000,
})
}
},
getLoginCode() {
getProvider()
.then(provider => {
// uni登录
uni.login({
provider: provider,
success: async loginRes => {
console.log("🚀 ~ file: index.vue:171 ~ getLoginCode ~ loginRes:", loginRes)
this.code = loginRes.code
}
})
})
},
// 微信用户手机号登录
phoneLogin(e) {
console.log('用户微信手机号登录')
if (e.mp.detail.errMsg == 'getPhoneNumber:ok') {
console.log('wxLoginCode', this.code)
cookie.set('wxLoginCode', this.code)
wxappAuth({
encryptedData: e.mp.detail.encryptedData,
iv: e.mp.detail.iv,
code: this.code,
spread: cookie.get('spread'),
})
.then(res => {
console.log('登录成功,开始处理登录信息保存,并获取用户详情')
uni.hideLoading()
store.commit('login', res.data.token, dayjs(res.data.expires_time))
store.dispatch('userInfo', true)
getUserInfo()
.then(user => {
console.log('获取用户信息成功')
uni.setStorageSync('uid', user.data.uid)
store.dispatch('setUserInfo', user.data)
this.$yrouter.reLaunch({
path: cookie.get('redirect').replace(/\ /g, ''),
})
})
.catch(error => {
console.log('获取用户信息失败')
this.getLoginCode()
})
})
.catch(error => {
console.log(error)
console.log('登录接口调用失败')
this.getLoginCode()
})
} else {
uni.showToast({
title: '已拒绝授权',
icon: 'none',
duration: 2000,
})
}
},
},
mounted() {
if (wx.getUserProfile) {