小程序各种姿势实现登录
2018-09-16 19:24 阅读(318)

本文可能涉及的内容--

更新

首先感谢@shaonialife同学的精彩评论~

本文的小程序登录指的是什么?

在本篇文章所讲的登录不仅仅指的是wx.login而是包括以下三点--

我需要获取用户头像和昵称要怎么做?

用户头像和昵称对于我们开发小程序几乎算是刚需,那么我们应该怎么样正确高效的获取&利用它们呢?

旧时代--自动授权一把梭

新时代--使用小程序的open-data

使用open-data时需要注意小程序基础库的版本。具体使用方式如下

其实可以将open-data看作图片或字符串,想要控制样式在外层加上view标签以及相应的class即可。

相比之前获取用户基本信息的方式,这个方案还是比较走心的,如果一些小程序只是对用户的头像昵称等基本信息有需求的话就不需要和以前一样大费周章的调一个getUserInfo,拿回来一堆用不上的东西。

我需要用户在服务器端实现登录该怎么做?

按照微信小程序的文档,能在服务器端完成登录(获取用户session_key/openid等),有三个前端传回的参数是必不可少的:

code是通过wx.login获取的,而encryptedData & iv是从wx.getUserInfo中获取的。

但是,因为微信基础库更新,取消通过api调用getUserInfo的能力,需要使用button组件的开放能力[open-type]去调用getUserInfo方法。

上述获取数据的方法具体建议阅读官方文档:

有关getUserInfo的文档

有关login的文档

踩坑心得:请确保wx.login早于getUserInfo,不仅是代码执行层面的早,最好是login回调成功之后才去getUserInfo,不然可能会出现后端解密失败的情况,导致登录失败。

(还可以通过API方式调用getUserInfo的时候如何实现后端登录就不在此赘述了。)

尽管已经无法自动授权,我们还可以这样实现小程序的登录授权

总体来说有两种授权模式,一种是强制授权,另一种则是按需授权,无论是怎么样的流程基本都可以归类为这两种授权。

强制授权

按需授权

小结

接触小程序这段时间,对比了一下前后小程序对某些功能的调整,不由有一番感想--小程序由一开始的从开发者角度完善功能,慢慢变成了以用户的角度去升级功能了。也许对我们开发者来说不太友好,但不可否认 ,这只能是必然的趋势,所以还是积极拥抱变化吧~


作者:mykurisu
链接:https://juejin.im/post/5b6f137ee51d4566252aadb5