uniapp登录板块封装(旧接口getUserInfo)

发布时间 2023-12-03 10:35:00作者: jialiangzai
点击查看代码
	// 授权并获取用户信息
	const authorizeAndGetUserInfo = (loginRes) => {
		uni.getUserInfo({
			success(res) {
				// 用户信息获取成功,处理登录业务逻辑
				app.globalData.info = res.userInfo;
				app.globalData.api.index.getList({
					bodyData: {
						m: 'Tiktok',
						c: 'Public',
						a: 'douyinLogin',
						mchid: 1,
					},
					data: {
						anonymous_code: loginRes.anonymousCode,
						code: loginRes.code,
						nickname: res.userInfo.nickName,
						headimg: res.userInfo.avatarUrl,
						sex: res.userInfo.gender
					}
				}).then(fan => {
					app.globalData.token = fan.data.data.cookie
					app.globalData.info.encid = fan.data.data.encid
					uni.setStorageSync('info', app.globalData.info)
					// 如果需要提示用户登录成功,可以取消以下代码的注释
					// uni.showToast({
					//   title:'登录成功',
					//   icon:'success'
					// })
					// 假设这是一个响应式变量来控制登录显示
					if (loginShow && loginShow.value !== undefined) {
						loginShow.value = false;
					}
				})
			},
			fail(err) {
				uni.showToast({
					title: '未获取到您的信息,不能正常使用',
					icon: 'none'
				})
				uni.openSetting({
					success(res) {
						if (res.authSetting && res.authSetting['scope.userInfo']) {
							authorizeAndGetUserInfo(loginRes) // 用户开启权限后,重新调用授权并获取用户信息的函数
						}
					}
				})
			}
		})
	}

	const login = () => {
		uni.getProvider({
			service: 'oauth',
			success: function(providerRes) {
				uni.login({
					provider: providerRes.provider[0],
					success: function(loginRes) {
						authorizeAndGetUserInfo(loginRes); // 使用抽离出来的函数来进行授权并获取用户信息
					},
					fail: function() {
						uni.showToast({
							title: '登录失败,请重试',
							icon: 'none'
						});
					}
				});
			},
			fail: function() {
				uni.showToast({
					title: '获取服务提供者失败,请重试',
					icon: 'none'
				});
			}
		});
	}