小程序登陆

基于 egg.js 实现后端接口。

  1. 小程序启动时,请求 csrfToken 备用。
onLaunch(() => {
	uni.request({
		url: 'https://www.feizhaojun.com/api/',
		success: (res) => {
			uni.setStorageSync('csrfToken', (res.cookies[0].match(/csrfToken=(.*?); path=/))[1])
		}
	})
})
  1. 携带 appId 请求登陆接口,封装 login 方法支持回调
const login = (cb?: Function) => {
	uni.login({
		success(res: any) {
			if (res?.code) {
				uni.request({
					url: 'https://www.feizhaojun.com/api/mp/login',
					method: 'POST',
					header: {
						cookie: 'csrfToken=' + uni.getStorageSync('csrfToken'),
						'x-csrf-token': uni.getStorageSync('csrfToken'),
					},
					data: {
						code: res.code,
						appId: 'wx1d9f08bd5214d332'
					},
					success(res: any) {
						if (res.data.code) {
							uni.showToast({
								icon: 'none',
								title: "系统错误"
							})
							return
						}
						uni.setStorageSync('user', JSON.stringify(res.data.data))
						console.log(2, cb)
						cb && cb()
					},
					fail() {},
				})
			}
		},
		fail(err) {
			console.log(err)
		},
	})
}

export default login
  1. 在需要登陆的时机调用
onReady(() => {
	const user: any = JSON.parse(uni.getStorageSync('user') || null)
	if (!user?.token) {
		login(init)
	} else {
		init()
	}
})
创建时间:2026-02-12 17:38:27 更新时间:2026-02-12 18:01:02