getUserInfo 授权后重复获取信息
发布于 6 年前 作者 qianglu 8969 次浏览 来自 问答

<button open-type=“getUserInfo” bindgetuserinfo=“getUnionId” withCredentials>授权登录</button>

点击后我拿到了 user 相关的信息,

跳页后我该如何继续重复获得 user 信息

保存起来 或者 用 wx.getUserInfo 报警告,感觉都不太好,

还是说理论上只能把所有 user 相关操作放在 bind 的回调中完成。

4 回复

或者已授权的第二次打开小程序,用 code 和 user 信息取 UnionId,

总不能让用户又点按钮来让我们走 bind 的回调吧。

所以像这种需要重复获取 user 信息的 wx.getUserInfo 为啥要报警告呢…

wx的目的是不想用wx.authorize(),让小程序可以自动拉起授权弹框,并不是无法获得。

当用户没有授权或不授权用户信息时,而你仍然用wx.authorize()来调用授权弹框,console里自然会err提示你不要这么做。

我的解决方法如下:

  1. 用wx.getSetting()去获取已授权的功能

  2. 与项目内需要开启的授权功能列表项做比对

    1. 比对中,用wx.authorize()来执行授权弹框及数据获取的操作

    2. 如果有‘scope.userInfo’,但未授权,则跳过用wx.authorize()授权(严谨的处理方式),并显示<buttonopen-type="getUserInfo">;如果已授权,则继续用wx.authorize()获取数据,并把数据显示在界面上。

这里不推荐把用户信息以缓存的形式存至storage或其他地方,因为缓存的目的是减少请求提高效率,但缺点是无法及时更新数据。当用户更新了头像或昵称后,你显示的还是旧数据,这将影响体验。

授权过了都可以直接拿到信息,除非删除小程序再打开,只要授权还在,button就可以一直不用显示~

你的想法好矛盾,官方文档都写的清清楚楚了。 wx.getUserInfo 若已经授权 是允许拿用户信息的。警告只是为了提示开发者 新版微信 wx.getUserInfo 不能直接用于让新用户进行授权。 

官方案例都是把用户信息在保存在app.globalData中。咋就纠结这些呢?

回到顶部