在微信小程序新规环境下,只要三步就能搞定“无弹窗”授权登录。最近发现官方文档里提到,wx.getUserInfo接口把之前的自动弹窗功能给去掉了,必须把它放到组件里面,用户得主动点一下才能触发。这一改动让原本“按需弹窗”的优化方案彻底没用了——一旦用户拒绝了一次,小程序就再也无法弹出第二次的弹窗。为了让大家尽快适应新规,我抽空把授权流程给重写了,目的是为了让登录体验既符合规定又流畅。旧方案里我们会在组件里写死wx.getUserInfo,现在必须换成按钮点击触发。于是把流程拆分成两步:页面Load的时候先检查globalData.userInfo有没有值;要是没值,直接给用户跳转个新的授权页authorization,等用户点了授权之后再回调跳回原来的页面。这样既能防止弹窗乱跳,也能保证体验的连贯性。授权页的设计关键在于动图加持,用一张200KB的GIF让页面看着不再那么单调(虽然流量上会牺牲一点)。如果用户点了授权登录又拒绝了,在顶部也会给到提示。这套交互既合规又友好。WXML部分要考虑兼容低版本微信:写个允许微信授权后可体验更多功能的引导文案,搭配授权登录按钮和返回首页按钮。同时在最下面加上微信版本过低的提示。JS逻辑里通过backType来决定回跳路径:bindGetUserInfo函数里获取backtype参数记录来源路径;如果授权成功就保存到全局globalData.userInfo;最后用wx.reLaunch跳回到原路径;如果拒绝了就在这处理异常或提示。传递backType参数后授权成功就能精准回跳到用户原本想去的页面了。