天下网吧 >> 网吧天地 >> 天下码农 >> 前端开发 >> 正文

wx.getUserInfo升级到wx.getUserProfile最简洁方案

做微信小程序的老铁都知道4.13号开始wx.getUserProfile要正式上线了,很多老的项目需要修改登陆逻辑,如何最简单的,代码改动最小的方式修改代码来实现新旧版本兼容,优雅的完成升级呢?一起来看看下面的一个方案

先简单介绍下这个升级方案的逻辑吧:
wxml文件改造:
新增个getUserProfile的微信登陆入口。使用canIUseGetUserProfile来判断是使用旧版getUserInfo还是新的getUserProfile方式获取用户信息。
JS改造:
1、把旧的登陆逻辑代码单独出来一个doLogin方法,同时加以改造,新增个proFileUserInfo参数接收已经通过getUserProfile获取到的用户信息。如果这个参数有值的情况下优先使用这里面的已经获得到用户信息!
2、新增个登陆中间件方法wxLogin方法来接收wxml里的微信登陆按钮bindtap事件。并通过判断是canIUseGetUserProfile的值来调用getUserProfile还是getUserInfo方式来获取用户信息,再传递给doLogin方法。

下面是部分代码参考:


wxml:

<button class="weui-btn txwb-main-bg" type="warn" bindtap="wxLogin" wx:if="{{canIUseGetUserProfile}}">  <span class="iconfont icon-txwb-weixin" style="margin-right:10rpx;"></span>
微信授权登陆
</button>
<button class="weui-btn txwb-main-bg" type="warn" open-type='getUserInfo' bindgetuserinfo="wxLogin" wx:else>  <span class="iconfont icon-txwb-weixin" style="margin-right:10rpx;"></span>  微信授权登陆
</button>

js:

data: {
	....
	canIUseGetUserProfile: false,
	....
}

onLoad(options){
	...
	if (wx.getUserProfile) {
		this.setData({ canIUseGetUserProfile: true });
	}
	...
}

wxLogin(e){//新增的一个登陆中间方法  
	var that = this;
	wx.showLoading({
		title: '正在登陆..', //提示的内容,
		mask: true, //显示透明蒙层,防止触摸穿透,
		success: res => { }
	});
	if (this.data.canIUseGetUserProfile) {
		wx.getUserProfile({
			desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
			success: (res) => {
				that.doLogin(e, res.userInfo);
			},
			fail: res => {
				console.log("logwxloginres", res);
				wx.hideLoading();
			}
		});
	} else {
		that.doLogin(e);
	}
}

doLogin(e, proFileUserInfo = null){//旧的登陆代码
	...
	//原来的登陆代码逻辑,在旧的getUserInfo代码处新增判断:
	wx.getUserInfo({
		success: function (res) {
			/* begin 下面3行是新增的判断,代表userInfo已经通过wx.getUserProfile获取过获取过*/
			if (proFileUserInfo) {
				res.userInfo = proFileUserInfo;
			}
			/* end */
		}
	});
	...
}


本文来源:天下网吧 作者:天下网咖

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行