一、构造授权地址,用户同意授权,获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope={2}&state={3}#wechat_redirect
注:
appid为申请公众号给予的公众号id
redirect_uri为用户同意授权后的回调地址,该地址需要用URLEncoder.encode()进行编码
scope为snsapi_userinfo,表示要获取用户信息
state为回调时传递参数,该值有长度限制,如果使用该字段进行传递访问地址,也需要用URLEncoder.encode()进行编码
二、通过code换取网页授权access_token、openid
在上一步中,用户同意授权,则调用上一步中redirect_uri的接口,并将code与state传递回来,通过code获取access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code
注:
appid为申请公众号给予的公众号id
secret为申请公众号给予的公众号密码
code为上一步请求微信服务给予的code
如果第一步中scope为snsapi_userinfo,这返回结果中包含用户信息;为snsapi_base则获取用户openid不能够获取到用户信息。用户信息(昵称、头像、国、省、城市、性别、权限)
处理用户授权信息,然后跳转页面,如果跳转地址为state传递的并且用URLEncode.encode()编码过,则需要用URLDecode.decode()进行解码。