点击查看代码
// 授权并获取用户信息
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'
});
}
});
}