官方发通知说,wx.getUserInfo在4月30日后,在体验版和测试版中,将不能弹出授权提示框,且该功能会被移除.
我想知道 我用button type为getUserInfo验证组件,之后再用wx.getUserInfo获取用户信息可以吗?
为什么非要用wx.getUserInfo,因为我要在button按钮点击后,wx.login一下,获取code,之后获取sessionKey,之后去解密加密的用户信息获取Unionid,请官方回答一下1。
框架类型 | 问题类型 | API/组件名称 | 终端类型 | 操作系统 | 微信版本 | 基础库版本 |
---|---|---|---|---|---|---|
小程序 | Bug | button | 客户端 | 6.6.6 | 1.9.90 |
https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html
login 跟getUserInfo 在交互上不需要耦合
用户点击 button->调用login 同时返回了私密信息
用bindgetuserinfo 呀
code 是login返回的,不是getUserInfo返回的呀
wx.getUserInfo 返回的信息跟button返回的信息一样的。
你这个就相当于调用两次 getUserInfo
没看懂你需求
大部分 小程序 都是 公众号 或 APP 基础转换过来。对于跨平台开发 我们只希望方便的 获取 Unionid
至于图像昵称 既然有了 open-data 真不重要。 为什么证明“你妈是你妈” 要出一大堆 吓人的 警告框呢? 50%的用户都是被 吓走的。
同求官方回复
所以,全局缓存一个sessionkey用于解密吧,也比较符合腾讯的设计初衷.
这个建议对 单个小程序来说 没问题 , 但对多小程序 公众号与小程序得混合开发 会出问题。 openid 不能识别用户的唯一性。而login 官方并不是每次都给 uniID 。
@Jason Z.
并不是这种情况, wx.login的时候, 你的session_key其实在微信的服务器里已经生成了(但是刷新机制不明)
第一种情况, 显示登录按钮的时候就执行一次wx.login, 这时候假定session_key为aaa, 那么你点按钮的时候所获取的加密数据就需要用aaa来解密, 而如果用户长时间未点击登录按钮,直到aaa过期了, 那么再点击按钮所获取的加密数据就不是用aaa来解密的了,
第二种情况, 显示登录按钮的时候不执行wx.login, 点击按钮的代码里添加一个wx.login来获取一个code, 因为点击按钮时已经获取到数据了(这个数据其实是在wx.login之前生成的) 而你wx.login之后获取到用户信息加密数据之后执行的, 所以wx.login把微信服务器端的session_key刷新了, 这时候这个session_key不一定能解密出刚刚点击按钮获取的数据.
而且之前的wx.getUserInfo本身有一个参数是验证登录状态的, 未登录状态不会返回加密数据, 而按钮的方式不知道是如何做的, 如果我从未执行过wx.login, 那么通过按钮能不能获取的到加密数据, 如果能, 那么这个加密数据是通过哪个session_key加密的(因为我没执行过wx.login, 按道理也就是说从来没生成过session_key)
@彬彬 "如果你上次拿wx.login是很久之前, 通过button的getUserInfo拿到信息之后再执行wx.login()导致了session_key刷新, 那么新的code所获取的session_key是不能对数据进行解密的"
这里我还不是很懂:
官方说code的有效期是5分钟,假定我5分钟之内完成点击<button>获取userinfo操作,在这个时候为什么还要在回调成功后再进行wx.login操作?直接拿上次的code进行解密不行吗?
假定用户在登录页停留很久,原先的code失效了(这个是不是可以用wx.checkSession来判断?),这个时候通过<button>获取userinfo回调成功后再进行wx.login操作,那这个时候的code是最新的,这个新code不就是可以用来解密嘛?(我不是很懂后台的一些知识,解密操作可能也只是开发者后台来操作,对于我前台来说,只需要把新code传给他就行了)