1
This commit is contained in:
+89
-1
@@ -150,6 +150,33 @@ const executeAuthRequest = (url, data = {}, template = 'PUBLIC_AUTH', loadingTex
|
||||
return uni.$u.http.post(url, data, requestConfig)
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行认证请求(支持不同HTTP方法)
|
||||
* @param {string} method HTTP方法
|
||||
* @param {string} url 请求URL
|
||||
* @param {Object} data 请求数据
|
||||
* @param {string} template 配置模板
|
||||
* @param {string} loadingText loading文本
|
||||
* @param {Object} config 自定义配置
|
||||
* @returns {Promise} 请求Promise
|
||||
*/
|
||||
const executeAuthRequestWithMethod = (method, url, data = {}, template = 'PUBLIC_AUTH', loadingText = null, config = {}) => {
|
||||
const requestConfig = createAuthConfig(template, config, loadingText)
|
||||
|
||||
switch (method.toUpperCase()) {
|
||||
case 'GET':
|
||||
return uni.$u.http.get(url, requestConfig)
|
||||
case 'POST':
|
||||
return uni.$u.http.post(url, data, requestConfig)
|
||||
case 'PUT':
|
||||
return uni.$u.http.put(url, data, requestConfig)
|
||||
case 'DELETE':
|
||||
return uni.$u.http.delete(url, requestConfig)
|
||||
default:
|
||||
return uni.$u.http.post(url, data, requestConfig)
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== API方法 ====================
|
||||
|
||||
// ==================== 用户登录相关API ====================
|
||||
@@ -205,6 +232,27 @@ export const wxLogin = (wxData, config = {}) => {
|
||||
return executeAuthRequest('/wechat/user/mini/login', wxData, 'PUBLIC_AUTH', AUTH_LOADING_TEXTS.WX_LOGIN, config)
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信手机号登录
|
||||
* @description 通过微信手机号授权进行登录,获取用户token和信息
|
||||
* @param {PhoneLoginData} phoneData 手机号登录数据对象
|
||||
* @param {string} phoneData.code 微信登录code
|
||||
* @param {string} phoneData.encryptedData 加密的手机号数据
|
||||
* @param {string} phoneData.iv 初始向量
|
||||
* @param {Object} [config={}] 自定义请求配置
|
||||
* @returns {Promise<Object>} 返回登录结果,包含token和用户信息
|
||||
* @example
|
||||
* // 微信手机号登录
|
||||
* const result = await wxPhoneLogin({
|
||||
* code: 'wx_login_code',
|
||||
* encryptedData: 'encrypted_phone_data',
|
||||
* iv: 'initial_vector'
|
||||
* })
|
||||
*/
|
||||
export const wxPhoneLogin = (phoneData, config = {}) => {
|
||||
return executeAuthRequest('/wechat/user/mini/phone-login', phoneData, 'PUBLIC_AUTH', AUTH_LOADING_TEXTS.PHONE_LOGIN, config)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户手机号
|
||||
* @description 通过微信手机号授权更新已登录用户的手机号,需要用户已登录
|
||||
@@ -226,6 +274,45 @@ export const updatePhoneNumber = (phoneData, config = {}) => {
|
||||
return executeAuthRequest('/user/wechat/mini/phone-update', phoneData, 'AUTHENTICATED_SESSION', AUTH_LOADING_TEXTS.PHONE_VERIFY, config)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
* @description 获取当前登录用户的详细信息
|
||||
* @param {Object} [config={}] 自定义请求配置
|
||||
* @returns {Promise<Object>} 返回用户信息
|
||||
* @example
|
||||
* // 获取用户信息
|
||||
* const userInfo = await getUserInfo()
|
||||
*
|
||||
* @since 2.0.0 微信小程序用户信息接口
|
||||
*/
|
||||
export const getUserInfo = (config = {}) => {
|
||||
return executeAuthRequestWithMethod('GET', '/user/wechat/mini/userinfo', {}, 'AUTHENTICATED_SESSION', '获取用户信息中...', config)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户信息
|
||||
* @description 更新当前登录用户的信息
|
||||
* @param {Object} userData 用户数据对象
|
||||
* @param {string} [userData.nickname] 用户昵称
|
||||
* @param {string} [userData.avatar] 用户头像URL
|
||||
* @param {number} [userData.gender] 性别:0-未知,1-男,2-女
|
||||
* @param {string} [userData.city] 城市
|
||||
* @param {string} [userData.province] 省份
|
||||
* @param {string} [userData.country] 国家
|
||||
* @param {Object} [config={}] 自定义请求配置
|
||||
* @returns {Promise<Object>} 返回更新结果
|
||||
* @example
|
||||
* // 更新用户昵称
|
||||
* const result = await updateUserInfo({
|
||||
* nickname: '新昵称'
|
||||
* })
|
||||
*
|
||||
* @since 2.0.0 微信小程序用户信息更新接口
|
||||
*/
|
||||
export const updateUserInfo = (userData, config = {}) => {
|
||||
return executeAuthRequestWithMethod('PUT', '/user/wechat/mini/userinfo', userData, 'AUTHENTICATED_SESSION', '更新用户信息中...', config)
|
||||
}
|
||||
|
||||
// ==================== 用户注册相关API ====================
|
||||
|
||||
/**
|
||||
@@ -391,5 +478,6 @@ export const AUTH_CONFIG = {
|
||||
*/
|
||||
export const AUTH_UTILS = {
|
||||
createAuthConfig,
|
||||
executeAuthRequest
|
||||
executeAuthRequest,
|
||||
executeAuthRequestWithMethod
|
||||
}
|
||||
|
||||
@@ -230,6 +230,27 @@ export const getUserInfo = (config = {}) => {
|
||||
return executeGetRequest('/user/info', {}, 'AUTHENTICATED_QUERY_WITH_LOADING', config)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取微信用户信息
|
||||
* @description 获取当前登录用户的微信相关信息,包括微信昵称、头像等
|
||||
* @param {Object} [config={}] 自定义请求配置
|
||||
* @param {Object} [config.custom] 自定义请求选项
|
||||
* @param {boolean} [config.custom.loading] 是否显示loading,默认false
|
||||
* @param {boolean} [config.custom.toast] 是否显示错误提示,默认true
|
||||
* @returns {Promise<Object>} 返回微信用户信息对象
|
||||
* @example
|
||||
* // 基本用法
|
||||
* const wxUserInfo = await getWxUserInfo()
|
||||
*
|
||||
* // 自定义配置
|
||||
* const wxUserInfo = await getWxUserInfo({
|
||||
* custom: { loading: true }
|
||||
* })
|
||||
*/
|
||||
export const getWxUserInfo = (config = {}) => {
|
||||
return executeGetRequest('/user/wechat/mini/userinfo', {}, 'AUTHENTICATED_QUERY', config)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户基本信息
|
||||
* @description 更新用户的基本信息,如昵称、头像、个人简介等
|
||||
|
||||
@@ -65,7 +65,10 @@ export const NO_AUTH_APIS = [
|
||||
* 这些接口在调用时如果未登录会自动跳转到登录页面
|
||||
*/
|
||||
export const AUTH_REQUIRED_APIS = [
|
||||
|
||||
// 微信小程序用户相关接口
|
||||
'/user/wechat/mini/userinfo', // 获取用户信息
|
||||
'/user/wechat/mini/phone-update', // 更新手机号
|
||||
'/user/wechat/mini/check-unionid', // 检查UnionID
|
||||
]
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,6 +7,8 @@ import { HTTP_CONFIG, checkApiAuth, AUTH_REQUIRED_APIS } from './config.js'
|
||||
* 清理认证数据
|
||||
*/
|
||||
function clearAuthData() {
|
||||
console.log('HTTP拦截器: 清理认证数据被调用')
|
||||
console.trace('调用堆栈:')
|
||||
uni.removeStorageSync(HTTP_CONFIG.storageKeys.token)
|
||||
uni.removeStorageSync(HTTP_CONFIG.storageKeys.refreshToken)
|
||||
uni.removeStorageSync(HTTP_CONFIG.storageKeys.userInfo)
|
||||
@@ -188,8 +190,8 @@ export default (vm) => {
|
||||
|
||||
// 统一的响应数据处理
|
||||
if (data.code !== undefined) {
|
||||
// 如果服务端返回的状态码不等于200,则reject()
|
||||
if (data.code !== 200) {
|
||||
// 如果服务端返回的状态码不等于0(成功),则reject()
|
||||
if (data.code !== 0) {
|
||||
// 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示
|
||||
if (custom?.toast !== false) {
|
||||
uni.$u.toast(data.message || '请求失败')
|
||||
|
||||
Reference in New Issue
Block a user