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

2 回复

为了登录速度更快,更新本地用户信息成功和登录成功,是设计成异步的。 用户信息是响应式的挂在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 事件。通常需要在页面的 onLoadonShow 生命周期中监听。

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

  1. 打开 uni-app 项目。
  2. HBuilderX 中,右键点击 uni_modules 文件夹。
  3. 选择 更新 uni-id-pages

5. 检查登录逻辑

确保登录逻辑正确执行,且登录成功后 uni-id-pages 会触发 uni-id-pages-login-success 事件。


6. 调试事件监听

在监听事件时,可以添加简单的日志来确认事件是否被触发:

uni.$on('uni-id-pages-login-success', (userInfo) => {
  console.log('事件已触发,用户信息:', userInfo);
});
回到顶部