uni-app 监听到登录成功事件uni-id-pages-login-success时无法获取到用户信息
uni-app 监听到登录成功事件uni-id-pages-login-success时无法获取到用户信息
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 22H2 | HBuilderX |
产品分类:uniapp/H5
浏览器平台:Chrome
浏览器版本:版本 119.0.6045.200(正式版本) (64 位)
操作步骤:
监听uni-id-pages-login-success,在事件响应中获取用户信息
import { store } from '@/uni_modules/uni-id-pages/common/store.js'
store.userInfo._id
退出登录,清除缓存,然后登录,发现获取失败
预期结果:
获取成功
实际结果:
获取失败
bug描述:
在登录时候,会发出uni-id-pages-login-success事件:
uni_modules/uni-id-pages/common/store.js
loginSuccess(e = {}) {
//...
this.updateUserInfo()
uni.$emit('uni-id-pages-login-success')
}
更多关于uni-app 监听到登录成功事件uni-id-pages-login-success时无法获取到用户信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
为了登录速度更快,更新本地用户信息成功和登录成功,是设计成异步的。
用户信息是响应式的挂在Vue.observable(Vue2)/reactive(Vue3),只是显示用户信息的话不需要延迟获取。
如果登录成功后必须拿到用户信息数据做相关操作,或者希望拿到用户信息更新的时机,可以自己额外再加个uni.$emit(‘update-userInfo-success’) ,另外this.updateUserInfo()也支持同步调用
更多关于uni-app 监听到登录成功事件uni-id-pages-login-success时无法获取到用户信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app
中使用 uni-id-pages
登录成功后,监听 uni-id-pages-login-success
事件时无法获取到用户信息,可能是由于以下几个原因:
1. 事件监听时机问题
确保你在正确的时机监听了 uni-id-pages-login-success
事件。通常需要在页面的 onLoad
或 onShow
生命周期中监听。
onLoad() {
uni.$on('uni-id-pages-login-success', this.handleLoginSuccess);
},
onUnload() {
uni.$off('uni-id-pages-login-success', this.handleLoginSuccess);
},
methods: {
handleLoginSuccess(userInfo) {
console.log('登录成功,用户信息:', userInfo);
// 处理用户信息
}
}
2. 用户信息未正确传递
uni-id-pages-login-success
事件默认会传递用户信息作为参数,但需要确认 uni-id-pages
是否正确触发了事件并传递了用户信息。
可以在 uni-id-pages
的源码中查找 uni.$emit('uni-id-pages-login-success', userInfo)
的调用,确保 userInfo
已正确传递。
3. 用户信息未同步到本地
登录成功后,用户信息通常会被存储到 uni-id
的本地缓存中。可以通过以下方式手动获取用户信息:
const uniIdCo = uniCloud.importObject('uni-id-co');
uniIdCo.getUserInfo().then(res => {
if (res.code === 0) {
console.log('用户信息:', res.userInfo);
} else {
console.error('获取用户信息失败:', res.message);
}
});
4. uni-id-pages 版本问题
确保你使用的 uni-id-pages
是最新版本。旧版本可能存在事件触发或用户信息传递的 Bug。
更新 uni-id-pages
:
- 打开
uni-app
项目。 - 在
HBuilderX
中,右键点击uni_modules
文件夹。 - 选择
更新 uni-id-pages
。
5. 检查登录逻辑
确保登录逻辑正确执行,且登录成功后 uni-id-pages
会触发 uni-id-pages-login-success
事件。
6. 调试事件监听
在监听事件时,可以添加简单的日志来确认事件是否被触发:
uni.$on('uni-id-pages-login-success', (userInfo) => {
console.log('事件已触发,用户信息:', userInfo);
});