下面是我app中微信授权的逻辑 ("onlyAuthorize": true, 这个必须配置 不然拿不到code只能拿到authResult)
1、前端配置的appid(wx520d4aa054ef41d1)正确的
2、code是通过官方uni.login(weixin)获取的 没有diao'yo
id: 690968d1-0cea7817-0d85783d"}
secret 也是正确的
3、接口请求 https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx520d4aa054ef41d1&secret=XXX&code=023T1fll2sxdBg4
y一致报错
{zfjol2o0EE7
4T1fl4&grant_type=authorization_codeX_token?appid=wx520d4aa054ef41d1&secret=XXX&code=&grant_type=authorization_code
y一致报错
{"errcode":40029,"errmsg":"invalid code, rid: 690968d1-0cea7817-0d85783d"}
secret 也是正确的
// 定义微信登录函数
const onWxLogin = () => {
// 1. 获取登录服务提供商
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log('可用的登录服务:', res.provider);
// 检查是否支持微信
if (!res.provider.includes('weixin')) {
uni.showToast({ title: '当前环境不支持微信登录', icon: 'none' });
return;
}
// 2. 调起微信登录
uni.login({
provider: 'weixin',
"onlyAuthorize": true, // 微信登录仅请求授权认证
success: function (loginRes) {
console.log('微信登录成功:', loginRes);
const code = loginRes.code; // App端,code 在 loginRes.code
uni.showModal({
content:code || JSON.stringify(loginRes)
})
if (!code) {
uni.showToast({ title: '获取授权码失败', icon: 'none' });
return;
}
api.appLoginApi({code: code}).then(res=>{
console.log('app微信登录成功----', res)
const backendData = res.data;
if (backendData.success) {
uni.setStorageSync('userToken', backendData.token);
uni.showToast({ title: '登录成功' });
uni.reLaunch({ url: '/pages/index/index' });
} else {
uni.showToast({ title: backendData.message || '登录失败', icon: 'none' });
}
}).catch((err)=>{
console.log('err------app微信登录失败', err)
})
},
fail: (err) => {
console.error('微信登录失败:', err);
uni.showToast({ title: '登录失败,请重试', icon: 'none' });
}
});
},
fail: (err) => {
console.error('获取登录服务失败:', err.errMsg);
uni.showModal({
content:err.errMsg || '啥也没有'
})
}
});
};
