小程序开发涉及用户登录流程,但是,微信的登录这一套登录体系是真有点搞不懂,下面是官方的流程图

我这边的的需求是,用户首次打开小程序,获取用户在小程序的唯一标识:

不存在:则在个人中心点击头像,获取手机号和用户基本信息,信息传到后台,完成注册及登录,

已存在:则读取用户基础信息展示

之前的做法是在页面显示时(onShow),调用wx.login(),把code存下来,用户点击头像,获取用户基本信息和code一起传到后台.

// 监听页面显示onShow: function () {  let that = this  // 检查  wx.checkSession({    success(res) {    },    fail(err) {      wx.login({        success(res){          that.setData({            jsCode:res.code          })        }      })    }  })},

获取手机号并调用登录接口

//  获取手机号及基础信息getphonenumber: function (e) {  let that = this  const accountInfo = wx.getAccountInfoSync();  let parm = {    jsCode: that.data.jsCode,    appid: accountInfo.miniProgram.appId,    cloudID: e.detail.cloudID,    encryptedData: e.detail.encryptedData,    iv: e.detail.iv,  }  login(parm).then(res => {    console.log(res)  }).catch(err => {    console.log(err)  })},

但是这种方式后台始终报错。于是看微信登录的流程图,发现这种方式行不通,其实官方的标准流程是:

1. 调用wx.login()获取code

{    "errMsg":"login:ok",    "code":"0119hc000Y5UCK1eZq1009eniX39hc0J"}

2. 开发者服务提供登录凭证校验接口

小程序把得到的code和AppId+AppSecret传给我的后台的服务器

3. 开发者服务器到微信接口服务器(auth.code2Session)获取openid和session_key

openid(用户唯一标识)和session_key(会话密钥)我们在自定义处理下,返回前台,因为官方不建议直接把openid和session_key信息暴露给前台。

4. 前台拿到自定义的openid和session_key等信息在做业务需求时,业务参数带自定义信息返回后台

5. 后台根据自定义登录信息关联openid,做后续业务

以上就是微信小程序官方推荐的登录操作流程。根据这个流程,再修改我们的流程就一目了然了。

©著作权归作者所有:来自51CTO博客作者mb5fd86dae5fbf6的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 微信小程序实现带参分享并消息卡片获取参数
  2. 功能测试——app测试要点最全分析
  3. Centos7最小安装完成后,ifconfig命令用不了。
  4. 轮播图与懒加载
  5. Java反射机制:跟着代码学反射
  6. 克隆虚拟机和相互登录
  7. 一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)
  8. 最新工具:某网盘不限速下载器KinhDown,下载速度可达10MB/S
  9. 下载10m/s!不限速阿里云网盘如何获取注册邀请码?

随机推荐

  1. 不用***,如何查看国外技术文章
  2. Redis数据迁移的4种方法
  3. Python到底怎么读?
  4. 多线程学习(二) 多线程创建4种方式
  5. 多线程学习(一) 线程与进程的理解
  6. Error reading device /dev/bakupvg/baku
  7. 个人理解简单工厂模式和策略模式的区别
  8. 多线程学习(三)多线程开发带来的问题与解决
  9. 为什么说Python会成为最流行的编程语言?
  10. IPython6.0发布:放弃支持Python2.7