<button open-type=“getUserInfo” bindgetuserinfo=“getUnionId” withCredentials>授权登录</button>
点击后我拿到了 user 相关的信息,
那 跳页后我该如何继续重复获得 user 信息?
保存起来 或者 用 wx.getUserInfo 报警告,感觉都不太好,
还是说理论上只能把所有 user 相关操作放在 bind 的回调中完成。
或者已授权的第二次打开小程序,用 code 和 user 信息取 UnionId,
总不能让用户又点按钮来让我们走 bind 的回调吧。
所以像这种需要重复获取 user 信息的 wx.getUserInfo 为啥要报警告呢…
wx的目的是不想用wx.authorize(),让小程序可以自动拉起授权弹框,并不是无法获得。
当用户没有授权或不授权用户信息时,而你仍然用wx.authorize()来调用授权弹框,console里自然会err提示你不要这么做。
我的解决方法如下:
用wx.getSetting()去获取已授权的功能
与项目内需要开启的授权功能列表项做比对
比对中,用wx.authorize()来执行授权弹框及数据获取的操作
如果有‘scope.userInfo’,但未授权,则跳过用wx.authorize()授权(严谨的处理方式),并显示<buttonopen-type="getUserInfo">;如果已授权,则继续用wx.authorize()获取数据,并把数据显示在界面上。
这里不推荐把用户信息以缓存的形式存至storage或其他地方,因为缓存的目的是减少请求提高效率,但缺点是无法及时更新数据。当用户更新了头像或昵称后,你显示的还是旧数据,这将影响体验。