小程序社区的提问
业务场景
我们的授权流程是:在用户进入小程序的时候就让用户授权用户基本信息。虽然小程序官方建议在需要用户的昵称、头像等信息的时候再去让用户授权。
授权变动
由于小程序将授权用户基本信息改成了只能通过button调用,所以在此次小程序的开发中,我们自定义了一个授权弹框(图一),通过弹框上的【点击授权】按钮去调用微信授权弹框(图二)。
自定义授权弹框:
微信授权弹框:
实现
方案1:在tabbar页和具有分享功能的页面的onShow中调用wx.getSetting判断是否已经授权,如果已经授权,隐藏自定义授权弹框;否则,显示自定义授权弹框。代码如下:
小程序片段1: wechatide://minicode/a1GSyHmP7o10
存在的问题:在已经授权用户信息的情况下快速切换tab会出现wx.getSetting返回的res.authSetting['scope.userInfo']为空的情况,从而导致自定义授权弹框的显示。但此时点击自定义授权中的【点击授权】按钮又不能调起微信授权弹框,因为之前已经授权过了。猜测是因为频繁调用wx.getSetting的原因。
方案2:在tabbar页的onLoad中调用wx.getSetting,这样就避免了切换tabbar的时候频繁调用wx.getSetting。然后将是否授权的信息(authInfoDlg)存在全局,在tabbar页的onShow中根据authInfoDlg确定是否显示自定义授权弹框。代码如下: