日志截图及文本信息如下,有的微信号能取到 unionid,有的取不到 unionid。重点是取不 unionid 的,在校验签名时不通过,导致无法登录。
LoginError: https://api.weixin.qq.com/sns/jscode2session?appid=wx602e193fbc585b55&secret=密钥隐藏&js_code=081hLWPw13r9Nb0rSiPw1MkPPw1hLWPE&grant_type=authorization_code | {"session_key":"hjgy357LGg95nCC//WfzcQw==","expires_in":7200,"openid":"olBEQ0W8rfymBgEIz6Hdc3qP2s1Y","unionid":"oMJi-v_AUDTfmCCQ-wfPcOVGfrAQ"}
LoginError: https://api.weixin.qq.com/sns/jscode2session?appid=wx602e193fbc585b55&secret=密钥隐藏&js_code=013mifPI16dk1902BBOI1hMhPI1mifPJ&grant_type=authorization_code | {"session_key":"czSRXCdZogS68O90K2yOSw==","expires_in":7200,"openid":"olBEQ0dt2q1xzZAc6HLWllVSIFa4"}
----------------
appId=wx602e193fbc585b55
能取到 unionid openid(可以通过签名 sha1 校验):olBEQ0W8rfymBgEIz6Hdc3qP2s1Y
无 unionid openid(不能通过签名 sha1 校验):olBEQ0dt2q1xzZAc6HLWllVSIFa4
网友回复:
只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
sha1 校验是自身代码问题,是统一过滤了 emoji 符号所致。着重是 unionid 部分获取不到。
@我 ᴸ ᴶ ᴹ ,肯定是绑定了,不然怎么会有部分用户有 unionid 呢?
我觉得你理解错了,这里的用户是并不是说你自己,说的是你的客户,你的一部分客户绑定到微信开放平台帐号后,才会出现该字段,不然就不会出现该字段,你应该做一个判断
@我 ᴸ ᴶ ᴹ ,多谢指点,经测试发现关注微信公众号后,才会出现 unionid
由于jscode2session触发是静默的。所以必须是用户曾经授权过同一主体的其他公众号/移动应用,该接口才会吐出unionid。授权的方式包括授权登录或关注公众号。
详见文档
https://mp.weixin.qq.com/debug/wxadoc/dev/api/uinionID.html