Skip to content

Latest commit

 

History

History
42 lines (27 loc) · 2.17 KB

02_网页授权获取用户基本信息接口.md

File metadata and controls

42 lines (27 loc) · 2.17 KB

网页授权获取用户基本信息接口(OAuth2.0)

接口:/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自更新

因为access_token有效期为2小时,而因为refresh_token有效期最少为7天,所以这些数据服务器保留了7天时间。

每分钟会有定时器检查access-token的过期时间,发现过期时间少于8分钟则自动去更新。

通过refresh_token去微信服务器更新access_token,并重新写到redis。

所以,理论上,用户在7天内都只需要手动授权一次即可。