网站搜索系统,寓意前程似锦的工程公司名字,从留言板开始做网站,收录查询代码喜闻乐见的背景时间--由于最近接触小程序比较多#xff0c;又刚好经历过小程序的自动登录时代以及现在的点击登录时代。结合自己的实践以及观察到其他小程序的做法#xff0c;就有了这篇小分享~ 本文可能涉及的内容-- 更新
首先感谢shaonialife同学的精彩评论~ 可能由于用词… 喜闻乐见的背景时间--由于最近接触小程序比较多又刚好经历过小程序的自动登录时代以及现在的点击登录时代。结合自己的实践以及观察到其他小程序的做法就有了这篇小分享~ 本文可能涉及的内容-- 更新
首先感谢shaonialife同学的精彩评论~ 可能由于用词不当让大家误认为getUserInfo被弃用其实是我们在用户未授权的情况下无法通过API调用的方式使用getUserInfo。 文章里少体现一个重要内容获取用户头像昵称第一次需要使用 button 组件授权如果已经用组件授权了wx.getUserInfo 可直接返回用户数据无需重复授权弹窗。这意味着我们可以先使用wx.getSetting来判断用户是否授权过getUserInfo倘若授权过我们则可以调用wx.getUserInfo静默拿到想要的数据如果没授权过的话就该怎么干就怎么干~
本文的小程序登录指的是什么
在本篇文章所讲的登录不仅仅指的是wx.login而是包括以下三点--
获取用户基本信息调用微信wx.login接口实现服务器端登录
我需要获取用户头像和昵称要怎么做
用户头像和昵称对于我们开发小程序几乎算是刚需那么我们应该怎么样正确高效的获取利用它们呢
旧时代--自动授权一把梭 新时代--使用小程序的open-data
使用open-data时需要注意小程序基础库的版本。具体使用方式如下 其实可以将open-data看作图片或字符串想要控制样式在外层加上view标签以及相应的class即可。
相比之前获取用户基本信息的方式这个方案还是比较走心的如果一些小程序只是对用户的头像昵称等基本信息有需求的话就不需要和以前一样大费周章的调一个getUserInfo拿回来一堆用不上的东西。
我需要用户在服务器端实现登录该怎么做
按照微信小程序的文档能在服务器端完成登录获取用户session_key/openid等有三个前端传回的参数是必不可少的
codeencryptedDataiv
code是通过wx.login获取的而encryptedData iv是从wx.getUserInfo中获取的。
但是因为微信基础库更新取消通过api调用getUserInfo的能力需要使用button组件的开放能力[open-type]去调用getUserInfo方法。
上述获取数据的方法具体建议阅读官方文档
有关getUserInfo的文档
有关login的文档
踩坑心得请确保wx.login早于getUserInfo不仅是代码执行层面的早最好是login回调成功之后才去getUserInfo不然可能会出现后端解密失败的情况导致登录失败。
还可以通过API方式调用getUserInfo的时候如何实现后端登录就不在此赘述了。
尽管已经无法自动授权我们还可以这样实现小程序的登录授权
总体来说有两种授权模式一种是强制授权另一种则是按需授权无论是怎么样的流程基本都可以归类为这两种授权。
强制授权 适用范围对用户身份强依赖的小程序用户一进来就必须要知道用户的相关信息或者是用户一进来就必须根据用户id来拉取相关资源。 授权模式模式多种但共同特点都是会打断用户正常进入小程序的流程体验上有点瑕疵在此列出两种模式 不跳转页面无论点击页面中的任何地方都会弹出授权弹窗如图所示(没有将鼠标点击录进去实际是无论点哪都会触发授权)↓↓ 这种方案的实现方式其实很简单也很粗暴--将一个覆盖全屏的button组件以position: fixed的方式盖在需要这样登录的页面上然后将其opacity设为0即可。 跳转页面检测到非登录用户则强制跳转到登录页在里面进行登录逻辑的处理。 就个人而言还是比较喜欢这种授权模式的和微信自己生态内的授权有些许相似对用户来说不会那么突兀。 具体实现方式--相比上一种就复杂一些了这一种方式属于全局性质的拦截授权会中断当前页面的所有动作跳转至登录专用的页面在登录页登录成功后再返回原页面。
按需授权 适用范围对用户身份规划十分明确、可以接受在用户做出某些动作之后再获取用户身份的小程序。 授权模式不会打断小程序页面的主流程将授权加入主流程中。实现方式也是十分灵活无论是列表或是图片甚至是一段文字只要是需要用户手动触发的都可以作为授权的发起时机。 与上述强制授权中不跳转页面的方式类似但是有一个巨大的差异--这种方式不会强制用户授权而是在需要授权时才会出现相对没有这么骚扰使用小程序的用户。
小结
接触小程序这段时间对比了一下前后小程序对某些功能的调整不由有一番感想--小程序由一开始的从开发者角度完善功能慢慢变成了以用户的角度去升级功能了。也许对我们开发者来说不太友好但不可否认 这只能是必然的趋势所以还是积极拥抱变化吧~