小程序
小游戏
企业微信
微信支付
扫描小程序码分享
使用wx.login接口获取code,获取到的code不同,是否应该对应不同的session_key?
如果是的话,根据签名算法,应该返回不同的签名,但存在一定的机率返回相同的签名,请检查是否有问题
以下是两次调用接口返回的信息,"586c5..."是签名字段
PS: 已提交过一次但一直没回复,请核实下是平台问题还是我们实现的问题,感谢!
如果是平台问题,影响范围应该还是很大的(对于有验证校验值的小程序)
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
1、使用wx.login接口获取code,获取到的code不同,是否应该对应不同的session_key?
wx.login可能会刷新session_key。刷新存在一定的间隔。换而言之如果wx.login频率较快的话,间隔期间session_key不会再被刷新。但是我们保证在此期间用code换得的session_key都是有效session_key。
2、如果是的话,根据签名算法,应该返回不同的签名,但存在一定的机率返回相同的签名,请检查是否有问题。
wx.getUserInfo的签名是以当前用户有效的session_key来做签名的。日志看来应该是login频率比较频繁,session_key没有被刷新导致两次签名一样。
上述特性对应用校验签名会有怎样的影响?wx.login对于绝大多数情况应该只需要进行一次。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
好像不对,文档上是这么说的
那么调用完wx.login后,不对code进行置换,应该也是会刷新sessionKey的,那么理应在调用wx.getUserInfo时,就用最新的sessionKey进行加密,是这样吧?
是不是因为没有先使用code进行置换,就请求了wx.getUserInfo,所以还是使用旧的sessionKey进行加密?
也就是说sesionKey是在使用code置换后才会更新sessionKey(并且用于加密数据)?所以当r2在调用wx.getUserInfo时,由于还没有使用code置换sessionKey,所以r2中的数据还是使用s1进行加密。
这样的话就是我们实现的问题了,应该分开,处理完wx.login后,再调用wx.getUserInfo
@Band 我们是这么实现的,先调wx.login,完成后再调用wx.getUserInfo,然后把code及用户信息等一并传到服务端进行验证。
假设两次请求及对应的sessionKey分别是r1,s1和r2,s2,那么会有一定机率出现使用s2解密不了r2数据、签名也不通过,但使用s1对r2解密及验证签名却都可以。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
1、使用wx.login接口获取code,获取到的code不同,是否应该对应不同的session_key?
wx.login可能会刷新session_key。刷新存在一定的间隔。换而言之如果wx.login频率较快的话,间隔期间session_key不会再被刷新。但是我们保证在此期间用code换得的session_key都是有效session_key。
2、如果是的话,根据签名算法,应该返回不同的签名,但存在一定的机率返回相同的签名,请检查是否有问题。
wx.getUserInfo的签名是以当前用户有效的session_key来做签名的。日志看来应该是login频率比较频繁,session_key没有被刷新导致两次签名一样。
上述特性对应用校验签名会有怎样的影响?wx.login对于绝大多数情况应该只需要进行一次。
好像不对,文档上是这么说的
那么调用完wx.login后,不对code进行置换,应该也是会刷新sessionKey的,那么理应在调用wx.getUserInfo时,就用最新的sessionKey进行加密,是这样吧?
是不是因为没有先使用code进行置换,就请求了wx.getUserInfo,所以还是使用旧的sessionKey进行加密?
也就是说sesionKey是在使用code置换后才会更新sessionKey(并且用于加密数据)?所以当r2在调用wx.getUserInfo时,由于还没有使用code置换sessionKey,所以r2中的数据还是使用s1进行加密。
这样的话就是我们实现的问题了,应该分开,处理完wx.login后,再调用wx.getUserInfo
@Band 我们是这么实现的,先调wx.login,完成后再调用wx.getUserInfo,然后把code及用户信息等一并传到服务端进行验证。
假设两次请求及对应的sessionKey分别是r1,s1和r2,s2,那么会有一定机率出现使用s2解密不了r2数据、签名也不通过,但使用s1对r2解密及验证签名却都可以。