一、小程序登录接口相关 wx.login() / uni.login()
小程序登录的这套流程说难不难,说简单却着实让人搞了很久才渐渐明白,刚参加工作时总会遇到相关的问题摸不着头脑,查各种文档,发现看了很多不同的解决方法,不知道那个正确一个个去实验,而且自己做出来的东西总是让自己觉得不满意。经过一系列的摸索之后才逐渐明白,原来不是因为自己没搞明白,而是由于上度娘看到的很多资料各不统一有可能是由于wx小程序本身对于接口的规则调整而导致的不同。
下面就大致总结一下,具体该如何做吧,为了记录一下流程,就从头说起吧(当然我也是个小白,就大致表述一下自己的理解,欢迎大家指正,千万别怼我,脸皮薄)
1、小程序登录流程 不需要烦恼的授权弹窗
不管是小程序还是其他需要登陆的应用,在登陆的逻辑上都是大差不差,大致可以用下图的关系表示。
以下是小程序官方提供的小程序登录流程。与以上逻辑不同的是小程序多了一个微信服务端(但与此端交流多为后端人员的操作,除非是云开发的前端人员,否则此端不需要前端开发参与)。
我们可以发现,小程序登陆时,前端人员无需再提供手机号与密码,而是需要一个 code 值传给后端。
而这个code值则是通过微信提供的一个叫做 wx.login() 的api 的来的,只需要用户使用即可得到(uniapp中为 uni.login() )。
这里大家可能会疑惑为什么没有弹出授权窗口。实际上这个接口并不会弹出授权弹窗。而是直接使用就能得到,以往弹出授权窗口是当我们获取用户信息时(使用了 getUserProfile时 )才会弹出
使用uniapp时代码如下(小程序也差不多,以下有代码时不再解释):
uni.login({ provider: 'weixin', //使用微信登录 必要的参数详情看官方文档 success: function (loginRes) { console.log(loginRes); //返回的参数包含在loginRes中 }});
所以以后我们不需要再烦恼授权啊之类的问题,只需要写上这段代码,得到code值 ,将其传递给后端程序员即可, 后端可以根据你给的code 再加上小程序的appid和appsecret在微信服务的接口中拿到session_key 和openid, (appid和appsecret 这两个值需要去微信公众平台登录我们小程序的后台,再在 开发管理>开发设置 中查看得到,这个需要了解一下) ,然后后端大概率会处理一下数据,然后将加密的token传递给你。有了这个我们只需要将后端传回的token做好缓存,以及将其附带在每一个需要登陆才可以使用的功能的请求里,这样子登陆功能就大致是完善的了,其他细节根据业务或你配合的后端程序员去完善即可。
那什么时候会有登录弹窗?
wx.getUserinfo(别用了没啥子卵用)
已废弃,微信收回了,不建议用,就算版本老编译成功了,后续发布可能会有无法通过审核之类的问题。
wx.getUserProfile (也别用了,除非老板比牛犟)
这个接口可以 获取用户信息。每次请求都会弹出授权窗口,用户同意后返回 userInfo。但是仅限于微信小程序端基础库2.27.1及以上版本
这里改:
为啥?
因为wx.getUserProfile 接口被收回,详见《小程序用户头像昵称获取规则调整公告》。
啥意思?就是微信建议你别用了,用他提供的其他的方法吧,啥方法呢?就是别用微信的头像和昵称了,可以直接让用户自己填昵称和头像,他也给你准备好了易用的方法。
但是老板比牛犟,不听不听我不听,那咋办?
只能按照上图 ,调整到 基础库 2.10.4 - 2.27.0 的版本,不然的话你可能又会因为弹窗不弹而烦恼了。
大致就是以上了,本人技术能力有限,别骂,脸皮薄,如有错误之处,请大家指导,重申,我大致就是个初学者,就自己理解理解,学习之路坎坷,把自己一段时间的疑惑讲出,希望跟和我一样不太有天赋的小白互相交流。
来源地址:https://blog.csdn.net/SANGZHU_001/article/details/128125384