首先需要说明一下这是oauth2.0的授权码模式。至于oauth2.0可参考理解OAuth 2.0
1 申请微信测试号
配置好访问:
appId:测试号有
response_type:返回类型写code
REDIRECT:填跳转地址
SCOPE:只是用来获取进入页面的用户的openid填snsapi_base;如果不仅仅获取openId,还有获取用户信息的话填snsapi_userinfo
2 用户同意授权,获取code
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE(这里就携带了CODE,STATE了)
3 通过code换取网页授权access_token
获取code后,请求以下链接获取access_token:
appId:还是那个
code:上一步获得的
返回:
{ “access_token”:“ACCESS_TOKEN”,
“expires_in”:7200,
“refresh_token”:“REFRESH_TOKEN”,
“openid”:“OPENID”,
“scope”:“SCOPE” }
openid:微信账号和公众号绑定的唯一标识
3 拉取用户信息(需scope为 snsapi_userinfo)
请求:
http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
ACCESS_TOKEN:注意是第三步中返回的Json字符串的第一项。
返回:
{ “openid”:" OPENID",
" nickname": NICKNAME,
“sex”:“1”,
“province”:“PROVINCE”
“city”:“CITY”,
“country”:“COUNTRY”,
“headimgurl”: “http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46”,
“privilege”:[ “PRIVILEGE1” “PRIVILEGE2” ],
“unionid”: “o6_bmasdasdsad6_2sgVt7hMZOPfL”
}
参考文献
微信公众平台文档:link.
阮一峰 理解OAuth 2.0