uni-app IOS下QQ登陆问题

uni-app IOS下QQ登陆问题

开发环境 版本号 项目创建方式
HBuilderX 3.1.18 云端

产品分类:HTML5+


示例代码:

if (!s.authResult) {
s.login(e => {
// console.log('--------------1:', JSON.stringify(s.userInfo), JSON.stringify(s.authResult))
s.getUserInfo(e => {
let userInfo = e.target.userInfo
userInfo.openid = e.target.authResult.openid
resolve(userInfo)
}, e => {
reject(`获取用户信息失败:${JSON.stringify(e)}`)
})
}, e => {
reject(`登录服务失败:${JSON.stringify(e)}`)
// reject(`登录服务失败:${e.message} - ${e.code}`)
})
} else {
// console.log('--------------2:', JSON.stringify(s.userInfo), JSON.stringify(s.authResult))
s.getUserInfo(e => {
let userInfo2 = e.target.userInfo
userInfo2.openid = e.target.authResult.openid
resolve(userInfo2)
}, e => {
reject(`获取用户信息失败:${JSON.stringify(e)}`)
})
}

操作步骤:

// 微信、QQ登录
if (!s.authResult) {
s.login(e => {
// console.log('--------------1:', JSON.stringify(s.userInfo), JSON.stringify(s.authResult))
s.getUserInfo(e => {
let userInfo = e.target.userInfo
userInfo.openid = e.target.authResult.openid
resolve(userInfo)
}, e => {
reject(`获取用户信息失败:${JSON.stringify(e)}`)
})
}, e => {
reject(`登录服务失败:${JSON.stringify(e)}`)
// reject(`登录服务失败:${e.message} - ${e.code}`)
})
} else {
// console.log('--------------2:', JSON.stringify(s.userInfo), JSON.stringify(s.authResult))
s.getUserInfo(e => {
let userInfo2 = e.target.userInfo
userInfo2.openid = e.target.authResult.openid
resolve(userInfo2)
}, e => {
reject(`获取用户信息失败:${JSON.stringify(e)}`)
})
}

预期结果:

返回用户信息

实际结果:

获取用户信息失败:{"code": "-1001","message": "未登陆或登陆已注销"}

更多关于uni-app IOS下QQ登陆问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

appid 相关信息是否有问题

更多关于uni-app IOS下QQ登陆问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


感谢回复,appid,经过反复检查没有问题,与QQ开放平台给的一样,我们软件之前的版本中QQ登陆是可以的,昨天升级了hbuilderX后重新打包,出现此问题,经反复检查,估计问题出在hbuildex里,麻烦看看,谢谢!

回复 烂柯野人: 用uni-demo中的qq登录试下有没有问题

回复 烂柯野人: 本地调试有问题吗

回复 DCloud_iOS_WZT: 本地调试也是IOS不行,和云打包一样

uni-demo中的QQ登陆是可以的,我下载个老版本的HBuilderX试试

还是看下打包前是不是有什么改动,或者是不是key过期之类的,我这边hx最新版本的QQ登录是没问题的

问题找到了,经过与github上的登陆源码对比,需要先Logout,再login就可以了。感谢DCloud!

好的,应该是本地的过期了

在iOS环境下使用uni-app进行QQ登录时遇到“未登陆或登陆已注销”错误,通常与uni-app的登录授权流程和iOS平台限制有关。以下是关键排查点:

  1. 检查uni.login前置调用
    确保在调用getUserInfo前已成功执行uni.login获取到有效的authResult。iOS平台要求登录流程必须严格按顺序执行,先完成服务端授权再获取用户信息。

  2. 验证QQ开放平台配置

    • 确认Bundle ID与QQ开放平台登记的iOS应用ID一致
    • 检查Universal Link配置是否正确(iOS 13+强制要求)
    • 确保QQ互联平台的应用审核状态为“已上线”
  3. 处理iOS权限弹窗时序
    iOS系统会拦截连续弹出的授权窗口。建议在login成功后延迟500ms再调用getUserInfo,避免系统误判为滥用弹窗。

  4. 检查网络环境限制
    部分企业网络或代理可能阻断QQ登录的域名访问。测试时建议切换至4G/5G网络环境。

  5. 升级SDK版本
    HBuilderX 3.1.18对应的uni-app SDK可能存在已知兼容性问题。建议升级至3.4.10+版本,该版本重构了iOS端QQ登录的底层实现。

代码修改建议:在login回调中显式校验authResult有效性:

s.login(e => {
  if (e.authResult && e.authResult.openid) {
    setTimeout(() => s.getUserInfo(/* ... */), 500)
  }
})
回到顶部