https://open.weixin.qq.com/connect/qrconnect?appid=你的APPID&redirect_uri=http://你的授权回调域&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect
http://你的授权域/?code=获取的code&state=STATE
https://api.weixin.qq.com/sns/oauth2/access_token?appid=你的AppId&secret=你的AppSecret&code=上一步获取到的code&grant_type=authorization_code
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
【注意事项】如果发送请求后的结果是{"errcode":40029,"errmsg":"invalid code"}
,那就说明token已经过期。
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=你的APPID&grant_type=refresh_token&refresh_token=获取access_token时的REFRESH_TOKEN
已超时
,那么进行refresh_token会获取一个新的access_token,新的超时时间;未超时
,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
{"errcode":40030,"errmsg":"invalid refresh_token"}
,说明refresh_token已经过期,需要重新获得access_token和refresh_token。https://api.weixin.qq.com/sns/userinfo?access_token=你的ACCESS_TOKEN&openid=用户的OPENID
{
"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"privilege":[
"PRIVILEGE1",
"PRIVILEGE2"
],
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
【微信官方提示】如果你有多个应用,并且允许用户在这多个应用中进行数据共享的话,使用的是unionid,unionid是唯一的,也就是一个微信号对应一个unionid,而一个微信号会对应多个openid,openid在不同的应用中是不同的,但是在同一个应用中是相同的(微信通过用户唯一标识,例如微信号和应用id加密后生成openid)。同时,微信提醒,用户在修改头像之后,修改前的url会失效,为了保证url失效后的异常情况,应该保存好微信头像地址。