优化微信扫码登录功能及token获取逻辑
This commit is contained in:
@ -55,7 +55,7 @@ export const getTokenByCode = (params: { type: number; code: string; state: stri
|
||||
/**
|
||||
* 社交快捷登录,使用 code 授权码
|
||||
*/
|
||||
export const socialLoginByCode = (params: { type: number; code: string; state: string }) => {
|
||||
export const socialLoginByCode = (params: { type?: number; code?: string; state?: string; openId?: string; sceneStr?: string }) => {
|
||||
return useDollarFetchRequest.post<
|
||||
IResponse<{
|
||||
accessToken: string
|
||||
|
||||
@ -11,8 +11,10 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import useUserStore from '~/stores/user'
|
||||
import { getLoginQrcode, checkScanStatus } from '~/api/personal-center/index'
|
||||
import QrcodeVue from 'qrcode.vue'
|
||||
const store = useUserStore()
|
||||
|
||||
const visible = defineModel('visible', {
|
||||
default: false,
|
||||
@ -60,8 +62,10 @@
|
||||
if (response.code === 0) {
|
||||
checkLoginInfo.value = response.data
|
||||
if (checkLoginInfo.value.status === 'SCANNED') {
|
||||
// 登录
|
||||
await store.getTokenV2({ openId: checkLoginInfo.value.openId as string, sceneStr: sceneStr.value })
|
||||
// 扫码成功
|
||||
// visible.value = false
|
||||
visible.value = false
|
||||
clearInterval(timer.value)
|
||||
} else if (checkLoginInfo.value.status === 'EXPIRED') {
|
||||
// 二维码过期
|
||||
|
||||
@ -99,6 +99,38 @@ export default defineStore('useUserStore', {
|
||||
console.error('getToken error:', error)
|
||||
}
|
||||
},
|
||||
async getTokenV2(row: any) {
|
||||
const app = useNuxtApp()
|
||||
try {
|
||||
const res = await socialLoginByCode({
|
||||
openId: row.openid,
|
||||
sceneStr: row.sceneStr,
|
||||
})
|
||||
|
||||
const { code, data } = res
|
||||
if (code === 0) {
|
||||
// 打开登录界面
|
||||
if (!data.accessToken) {
|
||||
ElMessage.error('因你未绑定手机号,请先绑定手机号')
|
||||
app.$openLogin('verify', row.code, row.type, row.state)
|
||||
} else {
|
||||
refreshToken.setToken(data.accessToken, data.refreshToken)
|
||||
refreshToken.setUserId(data.userId.toString())
|
||||
// refreshToken.setUserName(loginForm.mobile)
|
||||
this.setToken(data.accessToken)
|
||||
this.setUserId(data.userId.toString())
|
||||
// userStore.setUserName(loginForm.mobile)
|
||||
this.setRefreshToken(data.refreshToken)
|
||||
// 获取信息
|
||||
await this.getUserInfo()
|
||||
}
|
||||
} else {
|
||||
console.error('获取token失败:', res.msg)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('getToken error:', error)
|
||||
}
|
||||
},
|
||||
},
|
||||
persist: import.meta.client && {
|
||||
key: 'tuxixi-store',
|
||||
|
||||
Reference in New Issue
Block a user