小程序
小游戏
企业微信
微信支付
扫描小程序码分享
<button open-type="getUserInfo" bindgetuserinfo="getUnionId" withCredentials>授权登录</button>
点击后我拿到了 user 相关的信息,
那 跳页后我该如何继续重复获得 user 信息?
保存起来 或者 用 wx.getUserInfo 报警告,感觉都不太好,
还是说理论上只能把所有 user 相关操作放在 bind 的回调中完成。
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
授权过了都可以直接拿到信息,除非删除小程序再打开,只要授权还在,button就可以一直不用显示~
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
恩恩,后端需要 UnionId,需要 user 信息中的 iv 等信息,
像这种已授权了不走 bind 了,你会如何去获取呢。
wx的目的是不想用wx.authorize(),让小程序可以自动拉起授权弹框,并不是无法获得。
当用户没有授权或不授权用户信息时,而你仍然用wx.authorize()来调用授权弹框,console里自然会err提示你不要这么做。
我的解决方法如下:
用wx.getSetting()去获取已授权的功能
与项目内需要开启的授权功能列表项做比对
比对中,用wx.authorize()来执行授权弹框及数据获取的操作
如果有‘scope.userInfo’,但未授权,则跳过用wx.authorize()授权(严谨的处理方式),并显示<buttonopen-type="getUserInfo">;如果已授权,则继续用wx.authorize()获取数据,并把数据显示在界面上。
这里不推荐把用户信息以缓存的形式存至storage或其他地方,因为缓存的目的是减少请求提高效率,但缺点是无法及时更新数据。当用户更新了头像或昵称后,你显示的还是旧数据,这将影响体验。
想不到吸引了这么多人进来讨论,哭唧唧...
授权部分是没问题的,无论是 wx.authorize 或者 wx.getSetting,都要去通过 button 来弹窗获取授权。
本帖所纠结的部分只在于二次获取 user 信息时
不想存 storage !也不想重新按 button !也不想被 wx.getUserInfo 报警告...
看完是不是想打我,嚯哈哈哈,可能是强迫症吧。
为了提醒大家用 button 弹窗而非用 wx.getUserInfo 主动弹窗,这种报警告的形式真是让开发者不舒服呀。
你的想法好矛盾,官方文档都写的清清楚楚了。 wx.getUserInfo 若已经授权 是允许拿用户信息的。警告只是为了提示开发者 新版微信 wx.getUserInfo 不能直接用于让新用户进行授权。
官方案例都是把用户信息在保存在app.globalData中。咋就纠结这些呢?
唔,这个嘛,和把敏感信息放在 cookie 或 sessionStorage 中一样,感觉并不是比较好的办法。
而且对于第二次再打开小程序,globalData 可能就清空了,总不能再点按钮授权吧。
你只要onLaunch
判断这个用户是否授权过
再去决定调用wx.getUserInfo。是可以直接获取到用户信息的。。
官方只是不允许开发者用wx.getUserInfo来直接弹出授权。 不代表不给你用wx.getUserInfo<授权过>的用户的信息
恩恩,没问题,
用 button 去授权,用 getUserInfo 进行二次获取,
但还是会报警告,所以因此不太舒服....
浅黄色的警告 是提示。。只能说他们他们IDE这样开发比较严谨 让开发者知道官方授权的方式更改
或者已授权的第二次打开小程序,用 code 和 user 信息取 UnionId,
总不能让用户又点按钮来让我们走 bind 的回调吧。
所以像这种需要重复获取 user 信息的 wx.getUserInfo 为啥要报警告呢...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
授权过了都可以直接拿到信息,除非删除小程序再打开,只要授权还在,button就可以一直不用显示~
恩恩,后端需要 UnionId,需要 user 信息中的 iv 等信息,
像这种已授权了不走 bind 了,你会如何去获取呢。
wx的目的是不想用wx.authorize(),让小程序可以自动拉起授权弹框,并不是无法获得。
当用户没有授权或不授权用户信息时,而你仍然用wx.authorize()来调用授权弹框,console里自然会err提示你不要这么做。
我的解决方法如下:
用wx.getSetting()去获取已授权的功能
与项目内需要开启的授权功能列表项做比对
比对中,用wx.authorize()来执行授权弹框及数据获取的操作
如果有‘scope.userInfo’,但未授权,则跳过用wx.authorize()授权(严谨的处理方式),并显示<buttonopen-type="getUserInfo">;如果已授权,则继续用wx.authorize()获取数据,并把数据显示在界面上。
这里不推荐把用户信息以缓存的形式存至storage或其他地方,因为缓存的目的是减少请求提高效率,但缺点是无法及时更新数据。当用户更新了头像或昵称后,你显示的还是旧数据,这将影响体验。
想不到吸引了这么多人进来讨论,哭唧唧...
授权部分是没问题的,无论是 wx.authorize 或者 wx.getSetting,都要去通过 button 来弹窗获取授权。
本帖所纠结的部分只在于二次获取 user 信息时
不想存 storage !也不想重新按 button !也不想被 wx.getUserInfo 报警告...
看完是不是想打我,嚯哈哈哈,可能是强迫症吧。
为了提醒大家用 button 弹窗而非用 wx.getUserInfo 主动弹窗,这种报警告的形式真是让开发者不舒服呀。
你的想法好矛盾,官方文档都写的清清楚楚了。 wx.getUserInfo 若已经授权 是允许拿用户信息的。警告只是为了提示开发者 新版微信 wx.getUserInfo 不能直接用于让新用户进行授权。
官方案例都是把用户信息在保存在app.globalData中。咋就纠结这些呢?
唔,这个嘛,和把敏感信息放在 cookie 或 sessionStorage 中一样,感觉并不是比较好的办法。
而且对于第二次再打开小程序,globalData 可能就清空了,总不能再点按钮授权吧。
你只要onLaunch
判断这个用户是否授权过
再去决定调用wx.getUserInfo。是可以直接获取到用户信息的。。
官方只是不允许开发者用wx.getUserInfo来直接弹出授权。 不代表不给你用wx.getUserInfo<授权过>的用户的信息
恩恩,没问题,
用 button 去授权,用 getUserInfo 进行二次获取,
但还是会报警告,所以因此不太舒服....
浅黄色的警告 是提示。。只能说他们他们IDE这样开发比较严谨 让开发者知道官方授权的方式更改
或者已授权的第二次打开小程序,用 code 和 user 信息取 UnionId,
总不能让用户又点按钮来让我们走 bind 的回调吧。
所以像这种需要重复获取 user 信息的 wx.getUserInfo 为啥要报警告呢...