接口:/wx/auth
协议:页面访问,不支持Ajax(有302跳转)
参数dest: 当前页的回调地址,微信授权过后,服务端会带上用户信息并302跳转到dest(记得encodeURIComponent)
接口返回:302跳转回dest链接,后面带有userinfo={OBJECT}
参考例子:/public/test/wx/auth.html
userinfo字段返回说明
参数 | 描述 |
---|---|
openid | 用户的唯一标识 |
nickname | 用户昵称 |
sex | 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 |
province | 用户个人资料填写的省份 |
city | 普通用户个人资料填写的城市 |
country | 国家,如中国为CN |
headimgurl | 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效 |
privilege | 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) |
unionid | 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制) |
服务器在用户首次授权后,会以openId为key把access_token, refresh_token等信息都保存到redis里,同时给用户把openId写在cookies上。
所以用户在授过权后,第二次进入页面就不用再手动点击授权了,跳过获取code和获取access_token的步骤,直接从redis里获取access_token,再去请求userinfo。
数据缓存时间:7天
因为access_token有效期为2小时,而因为refresh_token有效期最少为7天,所以这些数据服务器保留了7天时间。
每分钟会有定时器检查access-token的过期时间,发现过期时间少于8分钟则自动去更新。
通过refresh_token去微信服务器更新access_token,并重新写到redis。
所以,理论上,用户在7天内都只需要手动授权一次即可。