最近一直忙着项目没有时间打理我的小程序,有网友反馈wx.getUserInfo官方文档中做了一些调整,今天有空看了下文档,果然变了,所以抽时间优化了下代码
思路
之前的授权登录优化这里看下原来的这篇文章,主要是在需要的时候才弹出用户授权,同时通过wx.openSetting
来实现用户拒绝后的二次授权,因为授权获取用户基本信息一旦拒绝之后小程序就不会再出现授权窗口。
但现在wx.getUserInfo
该接口将不再出现授权弹窗,需要嵌套在button
中让用户主动点击授权。
这样原本定义的方法就完全没用了:
getUserInfo: function (loginType, cb) {
var that = this
if (this.globalData.userInfo) {
typeof cb == "function" && cb(this.globalData.userInfo, true);
}
......
那只好换个思路啦,当点击需要授权的页面时,我们首先验证全局变量globalData.userInfo
是否有值,如果没有,那我们直接跳转到授权页面(authorization),引导用户授权登录,登录成功后再跳转回需要访问的页面。
具体实现
授权登录页面设计
首先需要建个授权登录页面,页面其实很简单,一段引导语和一个授权按钮,但设计下来发现太单调了,于是找了个gif动图,200多kb有点大[泪崩],为了好看就只能牺牲下了。
另外,如果用户不想授权,那此页面没有可操作按钮了,只能退出,这不太友好,所以又加了个返回首页的按钮,整体样式效果如下:
同时如果用户点击授权登录后依旧拒绝,在顶部给到一些小提示:
这个的话基本上的交互就有了,来看看具体代码:
//wxml:利用canIUse变量去兼容低版本
<view wx:if="{{canIUse}}">
<view class='zan-font-14 zan-c-gray-dark' style='text-align:center;margin-top:50rpx'>
允许微信授权后,可体验更多功能</view>
<view class="zan-btns">
<button open-type='getUserInfo' bindgetuserinfo="bindGetUserInfo" class="zan-btn zan-btn--primary">授权登录</button>
<button bindtap='navigateBack' class="zan-btn">返回首页</button>
</view>
</view>
<view wx:else class='zan-font-16 zan-c-red' style='text-align:center;margin-top:50rpx'>
您的微信版本过低,请升级后再次体验</view>
//js核心代码:其中利用backtype来确认授权登录后跳转回那个页面
bindGetUserInfo: function(e) {
let backtype = this.data.backType;
if (e.detail.userInfo) {
app.globalData.userInfo = e.detail.userInfo
if (backtype =='index') {
wx.switchTab({
url: '../index/index'
})
} else if (backtype == 'mine') {
wx.switchTab({
url: '../mine/mine'
})
} else {
wx.redirectTo({
url: '../detail/detail?blogId=' + backtype
})
}
} else {
this.showZanTopTips('很遗憾,您拒绝了微信授权,宝宝很伤心');
}
},
这里注意下,如果跳转的是微信菜单页,记得要用wx.switchTab
,详细的可以再看看官方文档,几个跳转的方法去体会下。
这样的话,在需要微信授权的页面去验证下,如果没有登录就可以直接跳转到该页面啦。
//比如用户中心的页面
onLoad: function () {
let that = this;
if (!app.globalData.userInfo) {
wx.redirectTo({
url: '../authorization/authorization?backType=mine'
})
}
that.setData({
userInfo: app.globalData.userInfo
});
}
其他
由于时间有限,有些代码处理的不是很好,这个大家主要体会下思路和主要方法,时间充裕的情况下还是要注意下自己的编码习惯。
另外就是有个小问题,在页面跳转时总有点小瑕疵,比如我第一次登录,在点击我的
菜单Tab时,小程序会首先渲染用户中心
这个页面,然后发现没有授权,直接一闪而过又跳到授权登录
页面,这个不懂有什么方式可以优化的,如果有改善建议还望指教。
总结
果然,小程序变化还是挺快的,看来有时间还是得多多迭代我的小博客呀,也欢迎有兴趣的小伙伴一起加入。