背景:百度小程序项目想要对用户未登录的情况做一个埋点统计,计算转化率,需要对一键登录和右上角关闭做埋点。
因为百度为了防止开发者滥用,11.26版本起废弃了swan.getUserInfo 和 swan.login等,必须通过button的调用形式才能获取用户信息或者登录。
百度官方文档链接:https://smartprogram.baidu.com/docs/develop/function/login/
正常来说按照官方文档这样处理即可,设置open-type=login,能判断未登录的用户触发一键登录弹框(小程序框架行为),然后用户点击登录或者关闭能触发绑定的login回调。
由于公司为了多端编译,使用的Taro的框架,而Taro的Button组件的openType属性并不支持login(应该是因为微信小程序和支付宝小程序都是必须登录才能使用,而百度小程序不登录就能使用,所以没有兼容);
Taro官方文档:http://taro-docs.jd.com/taro/docs/components/forms/button
弄到这里,没有办法了,只能另辟蹊径,最终将方案定在了getUserInfo:根据实践发现,设置openType=getUserInfo,当用户未登录时也能自动触发一键登录弹框,同时也支持回调!那么就可以通过一些判断来实现了。上代码:
首先,进入授权登录页面,先判断用户是否登录(下图一),并根据是否登录的状态,给绑定的回调方法添加不同入参(下图二),最后在回调方法中做判断做不同处理(下图三)