关于微信更新登录接口能力
发布于 6 年前 作者 dfeng 7542 次浏览 来自 问答

在这之前 是先调用wx.login获取code后调用wx.getuserinfo获取用户信息并且入库,但是现在更新成了点击按钮才可获取用户信息,想请问官方具体的解决方案是?(我的小程序操作方式是首页一加载必须获取到openid以及用户信息),求解,谢谢

10 回复

@Joue只能在tab bar 那一页里面放个button进行登录 参考 58同城 京东等

你这还是得授权啊

而且你说的情况是,用户开着页面三天不关,除非他手机不用了。这种情况就算出错都是可以接受的。

各位大神,怎么把这授权配置到 tabbar上,这open-type ,在这里脱裤子放屁啊。

@再见,电脑崽 你用code换取 unionid是 得关注公众号的吧

@再见,电脑崽 

你这个会出现一个问题, 就是在用户点击授权的时候, 一种比较特殊的情况是你后端保存的session_key(类似session, 如果有expire的话)或wx.checkSession临近过期, 用户一直开着授权页面就是不点, 直到你的过期了才点, 这时候你提交到后端的enctyptedData是无法通过你之前保存的session_key进行解密的

之所有很多人对这个wx.getUserInfo的API用的多, 一般就是把button的getUserInfo当成授权来用(因为不会像其它授权一样拒绝过就不弹框了, 这个可以一直弹框), 一旦授权成功, 那么执行wx.login获取code, 执行wx.getUserInfo重新拿一次encryptedData和iv, 这时候的code + encryptedData + iv传到后台, code换取session_key加上iv是一定可以解密enctyptedData的, 但是一旦取消这个api, 那么就会出现我上边说的情况, session_key过期导致的session_key和button获取的encryptedData不匹配的问题.

用户点击授权之前验证一次wx.checkSession吧,如果过期了重新wx.login获取code换取session_key。

@牛  我设置过微信开放平台,通过https://api.weixin.qq.com/sns/jscode2session就能获取到unionid了。

拿去用,不用谢,我花了两小时搞的。

开放平台下的unionid基本上是必须的, 很多人授权的目的根本不是要拿名字和头像, 是为了拿unionid

回到顶部