1.操作环境:微信web开发者工具 v0.20.191900(模拟器-iPhone 6) + Win7 64位
2.操作路径:
1)打开微信开发者工具,打开本地项目,设置有效的AppId,为了能够login和清除授权数据
2)侧边栏-项目-选择基础库版本1.3.0,清除数据、文件、授权数据,重新编译,然后切换到调试-控制台。
3)index页面,点击“获取头像昵称”按钮,弹出用户授权提示框,点击允许,控制台打印事件对象event,获取userinfo成功。
4)index页面,用户头像显示正常,点击头像跳转至log页面。
5)log页面,开发工具中清除授权数据,再次点击页面中“获取头像昵称”按钮,弹出授权提示框,点击拒绝,控制台手动调用 wx.getUserInfo,打印“用户拒绝授权”;然后再次点击“获取头像昵称”按钮,弹出授权提示框,点击允许,控制台再次手动 调用wx.getUserInfo,打印获取到的userInfo对象。
在此期间,“获取头像昵称”按钮的bindgetuserinfo回调没有被触发,所以手动调用getUserInfo观察授权结果。
6)跳转并执行步骤2(唯一区别:将基础库版本该为1.4.2以上),顺序执行步骤3、4、5
7)执行完步骤6,会发现与步骤5的区别就是,“获取头像昵称”按钮的bindgetuserinfo回调被正确的触发,控制台分别都打印 出用户允许和拒绝授权时的事件对象event。
3.问题描述:1.3.0-1.4.2(不包括1.4.2)之间的基础库,不能正确的在首页以外的页面,触发button的bindgetuserinfo回调。
但是我们所开发的小程序需要最低兼容至1.3.0版本。虽然通过按钮授权成功,即使没有触发bindgetuserinfo,可以通过wx.getUserInfo获取数据,但是用户授权成功或失败的时机是未知的。
注:文中的首页指app.json中pages属性,第一个数组元素对应的页面(如:page/index/index)
4.按上述操作控制台截图:
基础库版本:1.3.0,步骤1~5
基础库版本:1.4.2,步骤6
5.代码片段截图:
index页面由于代码较多,只截取与官方demo-quickstart有区别的部分,logs页面截取完整代码,红线为改动部分,红框为新增代码部分。
/** index.js **/
navigateTo尝试后有问题才改为redirectTo,其他跳转方式暂时未尝试。
/** logs.wxml **/
/** logs.js **/