微信小程序> 微信小程序登录方式的修改解决方案

微信小程序登录方式的修改解决方案

浏览量:2341 时间: 来源:极乐叔


微信小程序官方登录方式修改,要求通过button点击登录,和大家分享一下我的解决方案。

原先的登录逻辑是注册一个全局login方法, login方法中首先调用wx.login静默登录,获取临时登录凭证code,在开发者服务器后台调用 api,使用 code 换取 openid 和 session_key 。然后调用wx.getUserInfo获取用户信息。

现在的实现逻辑是写一个button中转页,进入小程序wx.getUserInfo获取失败后跳转到button中转页,点击button调用bindgetuserinfo方法,该方法返回的detail数据与wx.getUserInfo方法返回的信息一致,此时也可以获取到用户信息。回调成功后wx.navigateBack({})回原页面。

下面贴上部分代码片段:

async bindGetUserInfo(event) {    const { detail } = event;    const isSuccess = detail.errMsg === 'getUserInfo:ok';    if (isSuccess) {      this.authSuccess(detail);      return;    }    // 用户拒绝授权    // wx.navigateBack({});  }        async authSuccess(detail) {    await this.getToken(detail);    wx.navigateBack({});    // this.nextHander();  }      保存用户信息 async getToken(detail) {    console.log('getToken', detail);    const session_key = wx.getStorageSync('session_key');    const { encryptedData: encrypted_data, iv } = detail;    const that = this;    // 保存用户信息到服务器    const { data: { user, up_token, token, is_created } } = await this.fetch({      url: '/api/artisan/wechat/login',      data: {        session_key,        encrypted_data,        iv,      },      method: 'POST',    });    wx.setStorageSync('user', user);    this.$root.$parent.store.set('up_token', up_token, 30);    // 存储用户标识符到本地    this.$root.$parent.store.set('token', token, 30);    this.$root.$parent.store.set('is_created', is_created, 30);    //  redux    // store.dispatch({    //   type: 'SET_IS_CREATED',    //   payload: is_created,    // });  }

就酱愉快的重构结束~


作者:tinaawang
链接:微信小程序登录方式的修改解决方案-教程-小程序社区-微信小程序-微信小程序开发社区-小程序开发论坛-微信小程序联盟
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎