uni-app 微信登录无回调
uni-app 微信登录无回调
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 11.6 | CLI |
示例代码:
//auth 是通过 plus.oauth.getServices 里的 weixin
auth.authorize(async (r) => {
//这里没有执行
}, (err) => {
//这里没有执行
}, {
scope:'snsapi_userinfo',
state: 'xxxx'
})
更多关于uni-app 微信登录无回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html
11 回复
也试过了 一样的
最新的 328 SDK也测试了,还是不行
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/oauth?id=微信登录 离线打包的话 plist 需要改一下key 查看一下是否改过
回复 天生DR: universal link 配置没变过,之前一直有
回复 appwociao: 你先看一下 有什么和新的不一样的地方 改一下
回复 天生DR: 果然可以了 plist 里的 weixinoauth 换成 weixin,然后增加了 UniversalLinks 字段。感谢大佬!
回复 appwociao: 好的 以后遇到问题 先去看一下 相关文档 因为有时候第三方SDK变化 我们需要跟进 并会同步文档
问题分析:
从你的代码片段来看,你使用的是 plus.oauth 接口,这是 HTML5+ 的原生登录方式。微信登录无回调通常由以下几个原因导致:
- 配置问题:这是最常见的原因。微信开放平台的应用配置(AppID、AppSecret)与 uni-app 项目中
manifest.json的配置不一致。 - 签名问题:Android 平台需要确保应用签名正确,且与微信开放平台登记的签名一致。
- 回调 URL 问题:iOS 平台需要检查 Universal Links 配置是否正确。
- 作用域 scope:
snsapi_userinfo需要用户手动同意授权,而snsapi_base为静默授权。确保你申请了正确的权限。
排查步骤:
-
检查
manifest.json配置:- 打开
manifest.json,在“App 模块配置”中勾选“OAuth(登录授权)”。 - 在“微信登录”部分,填写正确的微信开放平台 AppID 和 AppSecret。
- 打开
-
检查微信开放平台配置:
- 确保应用已经通过审核(至少“开发阶段”需要)。
- Android:检查包名和签名 MD5 是否与开放平台登记的一致。可以通过
keytool -list -v -keystore your.keystore获取签名。 - iOS:确保 Bundle ID 和 Universal Links 配置正确。
-
检查代码逻辑:
- 确保
plus.oauth.getServices成功获取到了微信服务对象。 - 在调用
auth.authorize前,可以先通过auth.isAuthorized()检查是否已授权。
- 确保
代码调整建议:
plus.oauth.getServices((services) => {
let weixinAuth = services.find(service => service.id === 'weixin');
if (!weixinAuth) {
console.error('未获取到微信登录服务');
return;
}
// 检查是否已授权
weixinAuth.isAuthorized((authorized) => {
if (authorized) {
// 已授权,直接获取用户信息
weixinAuth.getUserInfo((userInfo) => {
console.log('用户信息:', userInfo);
});
} else {
// 未授权,发起授权
weixinAuth.authorize((res) => {
console.log('授权成功:', res);
// 获取用户信息
weixinAuth.getUserInfo((userInfo) => {
console.log('用户信息:', userInfo);
});
}, (err) => {
console.error('授权失败:', err);
}, {
scope: 'snsapi_userinfo',
state: 'xxxx'
});
}
});
}, (err) => {
console.error('获取服务失败:', err);
});


