符韬OvO 2024-01-29 15:11 采纳率: 45.5%
浏览 7
已结题

小程序用户默认登录问题

要做一个默认登录,小程序审核上线之后,别人访问小程序并没有做到默认登录上

这是App.vue

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-01-29 15:12
    关注

    引自免费微信小程序:皆我百晓生

    在小程序中,您希望实现用户在首次打开小程序时自动登录。根据您提供的代码片段,在App.vueonLaunch生命周期钩子中,您已经设置了微信登录流程:

    export default {
      onLaunch: function() {
        console.log('app Launch111');
        let that = this;
        uni.login({
          provider: 'weixin', // 使用微信登录
          success: function(res) {
            uni.setStorageSync('WX_CODE', res.code);
            that.$store.dispatch('index/GETWXCODE', { WX_CODE: res.code });
            WX_LOGIN({ code: res.code }).then(res => {
              uni.hideLoading();
              console.log(res);
              uni.setStorageSync('open_id', res.otherData);
              if (res.data && res.data.auth && res.data.auth.success) {
                uni.setStorageSync('WX_TOKEN', res.data.auth.token);
                uni.setStorageSync('HAS_LOGIN', true);
                uni.setStorageSync('USER_MOBILE', res.data.user.mobile);
                uni.setStorageSync('WX_USER_INFO', res.data.user);
              } else {
                that.$emit('setData', false);
              }
            },
            fail: function(res) {
              console.log('授权失败', res);
              that.$emit('setData', false);
            });
          },
        });
      },
    };
    

    这段代码的作用是在小程序启动时调用微信登录接口,并将获取到的code存储在本地缓存(uni.setStorageSync),然后通过自定义的WX_LOGIN函数发起后端请求以完成登录逻辑。

    但是,如果别人访问小程序并没有默认登录上,可能存在以下原因:

    1. 用户未授权微信登录权限:需要检查用户是否已授权微信登录,如果没有授权,则会触发fail回调。

    2. 后端处理逻辑问题:WX_LOGIN这个方法是与后端交互的部分,如果后端没有正确处理登录逻辑或返回的数据结构不符合预期,可能导致无法自动登录。

    3. 缓存读取错误:检查是否存在缓存读写异常,导致登录状态未能正确保存和读取。

    4. 已有缓存但登录状态失效:用户之前登录过,但现在登录状态已过期,需重新授权或刷新登录信息。

    若要确保默认登录功能正常运行,请确保上述各个环节无误,并在必要时更新您的后端服务以支持小程序用户的自动登录逻辑。同时,注意检查微信开发者文档关于登录的相关规定和限制。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月29日
  • 创建了问题 1月29日