diff --git a/constant/base.js b/constant/base.js new file mode 100644 index 0000000..f9ea3a1 --- /dev/null +++ b/constant/base.js @@ -0,0 +1,3 @@ +const isProd = true + +export const BASE_URL = 'http://8.138.234.141/ingress' \ No newline at end of file diff --git a/manager/AuthManager.js b/manager/AuthManager.js new file mode 100644 index 0000000..777f8bc --- /dev/null +++ b/manager/AuthManager.js @@ -0,0 +1,17 @@ +export function getWeChatAuthCode() { + return new Promise((resolve, reject) => { + uni.login({ + provider: 'weixin', + success: (res) => { + if (res.code) { + resolve(res.code); + } else { + reject(new Error('未获取到微信授权code')); + } + }, + fail: (err) => { + reject(err); + } + }); + }); +} \ No newline at end of file diff --git a/manager/LoginManager.js b/manager/LoginManager.js new file mode 100644 index 0000000..0cb64d6 --- /dev/null +++ b/manager/LoginManager.js @@ -0,0 +1,23 @@ +import { login } from "../request/api/Index"; + +import { getWeChatAuthCode } from "./AuthManager"; + +export async function loginAuth() { + try { + const openIdCode = '0f1XVM100D5JCU1BP6400WQQFD2XVM1T'// await getWeChatAuthCode(); + console.log('获取到的微信授权code:', openIdCode); + const response = await login({ + openIdCode, + grant_type: 'wechat', + scope: 'server', + clientId: '1' + }); + if (response.success) { + return response.data; + } else { + throw new Error(response.message || '登录失败'); + } + } catch (err) { + throw err; + } +} diff --git a/pages/drawer/DrawerHome.vue b/pages/drawer/DrawerHome.vue index 1142454..d9fe506 100644 --- a/pages/drawer/DrawerHome.vue +++ b/pages/drawer/DrawerHome.vue @@ -5,6 +5,7 @@ + {{item}} @@ -17,11 +18,26 @@ diff --git a/request/api/Index.js b/request/api/Index.js new file mode 100644 index 0000000..5134db7 --- /dev/null +++ b/request/api/Index.js @@ -0,0 +1 @@ +export * from './LoginApi.js' \ No newline at end of file diff --git a/request/api/LoginApi.js b/request/api/LoginApi.js new file mode 100644 index 0000000..58bd352 --- /dev/null +++ b/request/api/LoginApi.js @@ -0,0 +1,9 @@ +import request from "../base/request"; + +function login(args) { + return request.post('/auth/oauth2/token', args, { + noToken: true, + }); +} + +export { login } \ No newline at end of file diff --git a/request/base/request.js b/request/base/request.js new file mode 100644 index 0000000..2ef7b58 --- /dev/null +++ b/request/base/request.js @@ -0,0 +1,56 @@ +import { BASE_URL } from "../../constant/base"; + +const defaultConfig = { + header: { + Authorization: '', // 可在此动态设置 token + 'Content-Type': 'application/x-www-form-urlencoded' + }, +}; + +function request(url, args = {}, method = 'POST', customConfig = {}) { + // 判断 url 是否以 http 开头 + if (!/^http/.test(url)) { + url = BASE_URL + url; + } + // 动态获取 token + const token = uni.getStorageSync('token'); + let header = { + ...defaultConfig.header, + ...customConfig.header + }; + // 判断是否需要 token + if (customConfig.noToken) { + delete header.Authorization; + } else if (token) { + header.Authorization = `Basic ${token}`; + } else { + delete header.Authorization; + } + const config = { + ...defaultConfig, + ...customConfig, + header + }; + return new Promise((resolve, reject) => { + uni.request({ + url, + data: args, + method, + ...config, + success: (res) => resolve(res.data), + fail: (err) => reject(err) + }); + }); +} + +// 默认 POST +request.post = function(url, args = {}) { + return request(url, args, 'POST'); +}; + +// 支持 GET +request.get = function(url, args = {}) { + return request(url, args, 'GET'); +}; + +export default request; \ No newline at end of file