40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { post } from '@/utils/request'
|
||
import type { ApiResponse } from '@/types/api'
|
||
import type { User } from '@/types/user'
|
||
|
||
/** 登录请求参数 */
|
||
export interface WxLoginParams {
|
||
/** 前端调用 Taro.login() 获取的临时凭证(用于换取 openid/session_key) */
|
||
code: string
|
||
/**
|
||
* 手机号动态令牌(新版微信 API)
|
||
* openType="getPhoneNumber" 回调 e.detail.code
|
||
* 后端用此 code 调用微信接口换取手机号
|
||
*/
|
||
phoneCode?: string
|
||
/**
|
||
* 手机号加密数据(旧版微信 API,与 iv 配套使用)
|
||
* openType="getPhoneNumber" 回调 e.detail.encryptedData
|
||
*/
|
||
encryptedData?: string
|
||
/**
|
||
* 加密算法初始向量(旧版微信 API,与 encryptedData 配套使用)
|
||
* openType="getPhoneNumber" 回调 e.detail.iv
|
||
*/
|
||
iv?: string
|
||
}
|
||
|
||
/** 登录响应 data */
|
||
export interface WxLoginData {
|
||
token: string
|
||
user: User
|
||
}
|
||
|
||
/**
|
||
* 微信小程序登录
|
||
* POST /api/wx/login(公开接口,不附带 token)
|
||
*/
|
||
export function wxLoginApi(params: WxLoginParams): Promise<ApiResponse<WxLoginData>> {
|
||
return post<WxLoginData>('/api/wx/login', params, { skipToken: true })
|
||
}
|