优化微信扫码登录功能及token获取逻辑
This commit is contained in:
@ -55,7 +55,7 @@ export const getTokenByCode = (params: { type: number; code: string; state: stri
|
|||||||
/**
|
/**
|
||||||
* 社交快捷登录,使用 code 授权码
|
* 社交快捷登录,使用 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<
|
return useDollarFetchRequest.post<
|
||||||
IResponse<{
|
IResponse<{
|
||||||
accessToken: string
|
accessToken: string
|
||||||
|
|||||||
@ -11,8 +11,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import useUserStore from '~/stores/user'
|
||||||
import { getLoginQrcode, checkScanStatus } from '~/api/personal-center/index'
|
import { getLoginQrcode, checkScanStatus } from '~/api/personal-center/index'
|
||||||
import QrcodeVue from 'qrcode.vue'
|
import QrcodeVue from 'qrcode.vue'
|
||||||
|
const store = useUserStore()
|
||||||
|
|
||||||
const visible = defineModel('visible', {
|
const visible = defineModel('visible', {
|
||||||
default: false,
|
default: false,
|
||||||
@ -60,8 +62,10 @@
|
|||||||
if (response.code === 0) {
|
if (response.code === 0) {
|
||||||
checkLoginInfo.value = response.data
|
checkLoginInfo.value = response.data
|
||||||
if (checkLoginInfo.value.status === 'SCANNED') {
|
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)
|
clearInterval(timer.value)
|
||||||
} else if (checkLoginInfo.value.status === 'EXPIRED') {
|
} else if (checkLoginInfo.value.status === 'EXPIRED') {
|
||||||
// 二维码过期
|
// 二维码过期
|
||||||
|
|||||||
@ -99,6 +99,38 @@ export default defineStore('useUserStore', {
|
|||||||
console.error('getToken error:', error)
|
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 && {
|
persist: import.meta.client && {
|
||||||
key: 'tuxixi-store',
|
key: 'tuxixi-store',
|
||||||
|
|||||||
Reference in New Issue
Block a user